Сейчас изучаю сетевое программирование. Написал(скопипастил и немного подправил) сервер и клиент на java. На ноутбуке установлен Mint(ip 192.168.1.4), на компьютере Windows XP(ip 192.168.1.6). Запускаю сервер на Linux, потом в windows 'java Client 192.168.1.4' и ввожу комманды, все работает. Но когда сервер запускаю в Windows, а в Linux пишу 'java Client 192.168.1.6', то клиент не соединяется. На XP у меня firewall отключен, антивируса нет, не пойму что может мешать?
Client.java
import java.net.*;
import java.io.*;
public class Client {
public static void main(String[] ar) {
int serverPort = 5000; // здесь обязательно нужно указать порт к которому привязывается сервер.
//String address = "192.168.1.4"; // это IP-адрес компьютера, где исполняется наша серверная программа.
// Здесь указан адрес того самого компьютера где будет исполняться и клиент.
//System.out.println(ar[0]);
String address = ar[0];
try {
InetAddress ipAddress = InetAddress.getByName(address); // создаем объект который отображает вышеописанный IP-адрес.
System.out.println("Any of you heard of a socket with IP address " + address + " and port " + serverPort + "?");
Socket socket = new Socket(ipAddress, serverPort); // создаем сокет используя IP-адрес и порт сервера.
socket.setReuseAddress(true);
System.out.println("Yes! I just got hold of the program.");
// Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиентом.
InputStream sin = socket.getInputStream();
OutputStream sout = socket.getOutputStream();
// Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения.
DataInputStream in = new DataInputStream(sin);
DataOutputStream out = new DataOutputStream(sout);
// Создаем поток для чтения с клавиатуры.
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
String line = null;
System.out.println("Type in something and press enter. Will send it to the server and tell ya what it thinks.");
//System.out.println();
while (true) {
line = keyboard.readLine(); // ждем пока пользователь введет что-то и нажмет кнопку Enter.
//System.out.println("Sending this line to the server...");
out.writeUTF(line); // отсылаем введенную строку текста серверу.
out.flush(); // заставляем поток закончить передачу данных.
line = in.readUTF(); // ждем пока сервер отошлет строку текста.
//System.out.println("The server was very polite. It sent me this : " + line);
// System.out.println("Looks like the server is pleased with us. Go ahead and enter more lines.");
System.out.print("->");
}
} catch (Exception x) {
x.printStackTrace();
}
}
}
Server.java
import java.net.*;
import java.io.*;
import java.text.*;
import java.util.*;
public class Server
{
public static void main(String[] args)
{
//System.out.println("Hello");
int port = 5000;
try {
ServerSocket myserver = new ServerSocket(port);
System.out.println("Waiting for a client...");
myserver.setReuseAddress(true);
Socket socket = myserver.accept();//Ждем подключение клиента
InputStream sin = socket.getInputStream();
OutputStream sout = socket.getOutputStream();
DataInputStream in = new DataInputStream(sin);
DataOutputStream out = new DataOutputStream(sout);
String line = null;
System.out.println(socket.getLocalAddress());
while(true)
{
line = in.readUTF();
switch(line)
{
case "data":
System.out.println("Дата");
break;
case "time":
Date d = new Date();
SimpleDateFormat format1 = new SimpleDateFormat("dd.MM.yyyy hh:mm");
System.out.println(format1.format(d));
break;
case "exit":
socket.close();
break;
default:
System.out.println(line +" - Ошибка! Такой комманды нет!");
//System.out.println("->");
}
//System.out.println(line);
out.writeUTF(line);
out.flush();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}