Я делаю пару клиент / сервер с сокетами для отправки и получения данных туда и обратно.Когда я нахожусь дома в Интернете, используя две отдельные машины для клиент / сервер, он работает нормально, как и ожидалось.Данные передаются и пр.
Однако сегодня, когда я работал в местной кофейне (Второй Кубок, если это актуально), это не сработало.Я продолжал получать следующие ошибки: либо истекло время ожидания соединения, либо нет маршрута к хосту.
Вот соответствующий код:
Сервер:
public class TestServer {
public static void main(String[] args) throws Exception {
TestServer myServer = new TestServer();
myServer.run();
}
private void run() throws Exception {
ServerSocket mySS = new ServerSocket(9999);
while(true) {
Socket SS_accept = mySS.accept();
BufferedReader myBR = new BufferedReader(new InputStreamReader(SS_accept.getInputStream()));
String temp = myBR.readLine();
System.out.println(temp);
if (temp!=null) {
PrintStream serverPS = new PrintStream(SS_accept.getOutputStream());
serverPS.println("Response received");
}
}
}
}
Клиент: (соответствующая часть)
//sends a command to the server, and returns the server's response
private String tellServer(String text) throws Exception {
mySocket = new Socket("192.168.0.XXX", 9999); //the IPv4 address
//use the socket's outputStream to tell stuff to the server
PrintStream myPS = new PrintStream(mySocket.getOutputStream());
myPS.println(text);
//the following code will get data back from the server
BufferedReader clientBR = new BufferedReader(new InputStreamReader(mySocket.getInputStream()));
String temp = clientBR.readLine();
if (temp!=null) {
return temp;
} else {
return "";
}
}
Это так просто, как может быть.Опять же, как уже упоминалось, дома в моем интернете все работает нормально - просто сделайте ipconfig, возьмите IPv4-адрес и вставьте его для клиента.В кофейнях с бесплатным Wi-Fi это не работает.Я даже на всякий случай повозился со многими разными портами.
Спасибо за любую помощь, я новичок в сокетах и нахожу это запутанным.