Я пытался запустить простую программу тестирования сети без результатов.
Сервер:
import java.io.*;
import java.net.*;
public class ServerTest {
public static void main(String[] args) {
final int PORT_NUMBER = 44827;
while(true) {
try {
//Listen on port
ServerSocket serverSock = new ServerSocket(PORT_NUMBER);
System.out.println("Listening...");
//Get connection
Socket clientSock = serverSock.accept();
System.out.println("Connected client");
//Get input
BufferedReader br = new BufferedReader(new InputStreamReader(clientSock.getInputStream()));
System.out.println(br.readLine());
br.close();
serverSock.close();
clientSock.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
}
Клиент:
import java.io.*;
import java.net.*;
public class ClientTest {
public static void main(String[] args) throws IOException {
final int PORT_NUMBER = 44827;
final String HOSTNAME = "xx.xx.xx.xx";
//Attempt to connect
try {
Socket sock = new Socket(HOSTNAME, PORT_NUMBER);
PrintWriter out = new PrintWriter(sock.getOutputStream(), true);
//Output
out.println("Test");
out.flush();
out.close();
sock.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
Программаработает нормально, когда я использую 127.0.0.1 или мой внутренний IP-адрес для имени хоста.Но всякий раз, когда я переключаюсь на свой внешний IP-адрес, он выдает ошибку java.net.ConnectException: Connection refused: connect
.
Я специально выбрал такой необычный порт, чтобы посмотреть, не в этом ли проблема, но не повезло.Я могу без проблем подключиться с помощью telnet, но когда я пытаюсь получить доступ к порту с помощью canyouseeme.org, он сообщает мне, что время соединения истекло.Я даже пытался отключить все брандмауэры и антивирусы, включая стандартные Windows и брандмауэр маршрутизатора, со всеми переадресованными портами и включенной DMZ, и он по-прежнему говорит, что время соединения истекло.Я использую Comcast в качестве своего провайдера, и сомневаюсь, что они блокируют такой случайный порт.
Когда я использую трассировщик пакетов, он показывает трафик TCP, когда мой компьютер отправляет SYN и получает RST / ACK, поэтому выглядитстандартный заблокированный порт, и никакой другой подозрительный пакетный трафик не происходил.
Я понятия не имею, что происходит в этот момент;Я в значительной степени перепробовал каждый трюк, который я знаю.Если кто-нибудь знает, почему порт может быть заблокирован, или, по крайней мере, каким-то образом можно заставить программу работать, это было бы очень полезно.