Код в вопросе заключается в следующем:Гнездо для подключения Java истекло, работает на местном
class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(4001);
Socket s = ss.accept();
// streams, buffer, strings, main loop and socket closing; all works fine
}catch(Exception e) {/*handle*/}
}
}
class Client {
public static void main(String[] args) {
try {
Socket s = new Socket(InetAddress.getByName("24.135.22.219"), 4001); // << Connection fails here.
// streams, buffer, strings, main loop and socket closing; all works fine
}catch(Exception e) {/*handle*/}
}
}
Это все прекрасно работает на местном, когда "serverIP"
заменяется InetAddress.getByName(null)
. Однако, когда он заменяется моим IP-адресом, соединение не выполняется (даже если отключить брандмауэр Windows), и я получаю ошибку Connection timed out
.
Файлы для тестирования: here.
ли сервер, имеющий имя хоста как «ServerIP» 'ping'able? Передаются и принимаются пакеты? –
@Am_I_Helpful Да, я только что попробовал его в cmd. –
Если вы передаете IP-адрес «1.2.3.4», этот конструктор принимает имя хоста. Для использования конструктора IP-адреса необходимо создать InetAddress. – user1676075