Тайм-аут клиента Java сокетов - PullRequest
0 голосов
/ 02 апреля 2012

Используя Java-сокеты, я сделал простой сервер.Это работает, потому что он отправляет данные всякий раз, когда я ввожу адрес (192.168.1.68:54321) в веб-браузер другого компьютера.Но когда я пытаюсь подключиться к серверу с помощью сокета Java, время ожидания истекает.

Код подключения клиента:

public void connect() throws IOException {
        socket = new Socket(ip, port); // times out here
        socket.setKeepAlive(true);
        in = new ObjectInputStream(socket.getInputStream());
        out = new ObjectOutputStream(socket.getOutputStream());
        t = new Thread(this);
        run = true;
        t.start();
}

Как решить эту проблему?

1 Ответ

1 голос
/ 02 апреля 2012

Как решить эту проблему?

Зависит от того, в чем проблема.Но я ожидаю, что это одно (или более) из следующего:

  1. Клиент использует неправильный IP-адрес.
  2. Клиент использует неправильный номер порта.
  3. Сервер не работает.
  4. Существует проблема с физическим сетевым подключением или проблема с маршрутизацией.
  5. Соединение блокируется из-за проблемы брандмауэра на клиенте, сервереили где-нибудь в сети.

Из них я думаю, что последнее является наиболее вероятным.

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


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

Вы ошибаетесь.Ваш веб-браузер НЕ будет успешно подключен к вашему сервису.Служба на 54321 не поддерживает HTTP, поэтому ваш браузер не может извлечь из нее страницы.

Правила брандмауэра для TCP и UDP, как правило, специфичны для портов, которые вы пытаетесь использовать.Тот факт, что ваш веб-браузер может общаться с сервером через (я ожидаю) порты 80 и 443, НИЧЕГО не говорит о том, может ли что-то еще подключиться к другому порту.И еще одно осложнение заключается в том, что ваш веб-браузер может быть настроен (или автоматически настроен) на использование веб-прокси, а может означать, что он не общается с этим хостом напрямую.вообще.

Учитывая то, что вы сказали, весьма вероятно, что это проблема брандмауэра.Это мой лучший ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...