Java - проблема с запуском базовой сетевой программы - PullRequest
1 голос
/ 12 августа 2011

Я пытаюсь реализовать пример программы Socket от Sun, то есть сервер и клиент KnockKnock, найденные здесь: http://download.oracle.com/javase/tutorial/networking/sockets/readingWriting.html

Поэтому я собираю 3 файла (EchoClient, KnockKnockServer, KnockKnockProtocol) в проект, собираюих, затем перейдите к cmd для их запуска:

> java KnockKnockServer
> Could not listen on port: 4444. 

Кроме того, у меня проблемы с EchoClient (не то, что это много значит, так как сервер не работает).Я получаю следующее:

> java EchoClient
> Couldn't get I/O for the connection to: localhost 

Единственное, что я изменил в классе EchoClient, это попытался подключиться к "localhost" вместо их примера машины "taranis".Я вообще не понимаю ошибку ввода / вывода.

Так что мне нужно разобраться с этим, чтобы потом можно было его адаптировать.Вот что мне интересно: как мне узнать, какой порт прослушивать на KK-сервере?И если я захочу подключиться к другому компьютеру в EchoClient, я бы напрямую поместил их (IPv4) IP-адрес вместо «localhost»?

Спасибо за любую помощь

Ответы [ 4 ]

4 голосов
/ 12 августа 2011

Попробуйте другой (более высокий порт), поскольку 4444 может уже использоваться на вашем компьютере:

Техническое описание для порта 4444:

Порт 4444 специально назначен для функций аутентификации Kerberos 5, в частности, для реализации Kerberos 4 в различных системах, в том числе работающих на платформе Mac OS X. Порт 4444 связи используется для преобразования учетных данных Kerberos 5 в приемлемый формат Kerberos 4.

источник

1 голос
/ 13 августа 2011

Этот учебник нарушает правило № 2 об обработке исключений: он создает собственное сообщение об ошибке «Не удалось получить ввод / вывод для соединения с: ...» вместо печати фактического исключения. Измените это, чтобы сделать это, тогда у вас есть некоторая надежда выяснить, что пошло не так.

Я жаловался на этот урок около восьми лет назад; - (

(Правило № 1 - печать что-то. )

0 голосов
/ 06 августа 2013

попробуйте это: измените taranis имя хоста на localhost

kkSocket = new Socket("localhost", 4444);
0 голосов
/ 20 июня 2013

У меня была эта проблема вчера, когда я пытался узнать то же самое, что и вы!

1) Убедитесь, что у сервера и клиента один и тот же порт, например:

kkSocket = new Socket("localhost", 802); //Client 

serverSocket = new ServerSocket(802); //Server (я столкнулся с этой проблемой случайно)

2) Попробуйте изменить и порт сервера, и порт клиента на 10000 или выше

3) Программа выдаст «Knock!Knock!»и чем вам нужно набрать ввод. (Описанный вами зависший может быть просто сервер, ожидающий ввода)

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