Создание Java Socket занимает больше времени - PullRequest
5 голосов
/ 16 мая 2011

Я дал Socket soc = new Socket(host,port); Теперь, когда хост-машина работает и работает, сокет создается немедленно.

Но когда машина выключается или перезагружается, на эту строку уходит около 40 секунд. Я пытался использовать soc.setSoTimeout(timeout); Но эта строка используется после создания Socket. Следовательно, это не очень помогает.

Также, похоже, это ошибка в самой JAVA. http://bugs.sun.com/bugdatabase/view_bug.do;:YfiG?bug_id=5092063

Я пробовал несколько способов решения этой проблемы, таких как добавление порта компьютера и имени хоста в файл etc / hosts. Но это не работает. Из-за этой задержки из-за разрешения DNS при создании сокета время отклика моей системы сильно зависит.

Любая помощь будет принята с благодарностью.

спасибо, Sr

1 Ответ

10 голосов
/ 16 мая 2011

Используйте соединение с таймаутом метод

// create an unconnected socket
Socket soc = new Socket();
soc.setSoTimeout(SO_TIMEOUT); // if you like

// connect (with timeout)
soc.connect(new InetSocketAddress(host, port), CONNECT_TIMEOUT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...