Локальный ПК не может прочитать сокет другого ПК в той же сети - PullRequest
0 голосов
/ 14 января 2012

Я тестирую базовый пример чтения / записи сокетов Java от Oracle.com

Может читать / писать, если я запускаю сервер и клиент на одном компьютере. Но он не работает, когда его нужно прочитать с другого компьютера.

Вот как они связаны через один и тот же концентратор. Интернет-> Локальная сеть-> Концентратор-> ПК1 и ПК2

ПК1 - это сервер, на котором запущен KnockKnockServer.java. PC2 - это клиент, на котором запущен KnockKnockClient.java.

Все то же, что и KnockKnockClient.java по умолчанию, но это:

    kkSocket = new Socket("PC1", 18090);

Но я получил сообщение "Не удалось получить ввод / вывод для соединения с: PC1".

Я открыл один и тот же порт в программе Касперского на ПК1 и брандмауэр на ПК2. Даже если я отключил Kaspersky и брандмауэр на ПК1, он показывает ту же ошибку.

Есть идеи?

Спасибо

1 Ответ

1 голос
/ 14 января 2012

Попробуйте использовать IP-адрес вместо удаленного имени хоста:

kkSocket = new Socket("192.168.0.1", 18090);

В сетях Windows обычно используется WINS для разрешения имени хоста, а не DNS - большинство домашнихсети даже не имеют DNS-сервера.Это позволяет самой Windows находить удаленные службы (например, общие ресурсы) по имени, но большинству приложений все еще требуется надлежащая инфраструктура DNS для этого.

В качестве альтернативы, вы можете отредактировать hosts файл, чтобы связать IP-адреса любых хостов в вашей сети с их именами.

...