Что делается неправильно?(Java Server / Socket Программирование) - PullRequest
0 голосов
/ 11 ноября 2010

У меня небольшая проблема с подключением серверов и сокетов.Я убедился, что IP-адреса действительны, поэтому проблема не в том, что адреса не совпадают.И не тот порт, который не совпадает (я тоже это проверял).

Ниже приведен обработчик сервера

class ServerConnect extends Thread
{
   // ...
   public ServerConnect(int port, String pass) throws IOException
   {
      // ...
      this.start();
   }

   public void run()
   {
      try
      {
         // ...
         while (! server.isClosed()) // Make Connections
         {
            Socket newClient = server.accept();
            System.out.println("Connection Accepted!");
            // ...
         }

      }
      // ...
   }
}

И это разъем сокета

<code>class ClientConnect extends Thread
{
   // ...
   public ClientConnect(InetAddress ip, int port, String pass)
   {
      try
      {
         System.out.println("Connecting to host:\t" + ip.toString() + ":" + port);
         client = new Socket(ip, port);
         output = new PrintWriter(client.getOutputStream(), true);
         input = new Scanner(client.getInputStream());
         // ...
      }
      // ...
   }
   // ...
}

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

Также, пожалуйста, дайте мне знать, если я не предоставляю достаточно информации.Я сделал много тестов и могу сделать больше, чтобы понять, что не так.

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Звучит как проблема с сетью. Вы пытались пропинговать сервер с вашего клиентского компьютера? Вы проверяли, доступен ли порт (с помощью telnet или онлайн-тестера портов)?

Просто введите эти две команды в выбранной вами консоли, они должны работать в большинстве ОС и посмотрите, можно ли установить соединение:

ping <hostname>
telnet <hostname> <port>
0 голосов
/ 11 ноября 2010

Похоже, сервер недоступен с клиента. Можете ли вы пропинговать IP-адрес сервера с клиента? Есть ли межсетевой экран между сервером и клиентом? На сервере работает локальный брандмауэр?

...