Сеть Java «Соединение отказано: соединение»

Я пытался запустить простую программу тестирования сети, но без результатов.

Сервер:

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: соединение отказано: ошибка подключения .

Я специально выбрал такой необычный порт, чтобы проверить, была ли это проблема, с не повезло. Я могу без проблем подключиться с помощью telnet, но когда я пытаюсь получить доступ к порту с помощью canyouseeme.org, он сообщает мне, что время соединения истекло. Я даже попытался отключить все брандмауэры и антивирусы, включая стандартные для Windows и брандмауэр маршрутизатора, со всеми перенаправленными портами и включенной DMZ, но он по-прежнему говорит, что соединение истекло. Я использую Comcast в качестве своего интернет-провайдера и сомневаюсь, что они блокируют такой случайный порт.

Когда я использую трассировщик пакетов, он показывает TCP-трафик, когда мой компьютер отправляет SYN и получает RST / ACK, поэтому это выглядит как стандартная блокировка порт, и никакого другого подозрительного пакетного трафика не происходило.

Я понятия не имею, что происходит в данный момент; Я испробовал практически все известные мне уловки. Если кто-нибудь знает, почему может быть заблокирован порт или хотя бы какой-то способ заставить программу работать, это было бы очень полезно.

10
задан 29 April 2014 в 10:31
поделиться