Вопросы с Java-сокетом - PullRequest
       2

Вопросы с Java-сокетом

0 голосов
/ 15 сентября 2011

В Java, я могу написать код, подобный этому:

 ServerSocket ss = new ServerSocket(1111);
 Socket s = ss.accept();
 // here s.getLocalPort() is 1111
 ss.close();
 // here this is ok even s is still connected with a client.
 ss = new ServerSocket(s.getLocalPort());

на стороне клиента:

Socket s = new Socket("localhost", 1111);
// this line will throw an exception. 
ServerSocket ss = new ServerSocket(s.getLocalPort());

Что я не понимаю, так это то, что последняя строка из двух приведенных выше фрагментов кода не имеет значения, почему он работает по-другому? любая информация высоко ценится, спасибо заранее.

1 Ответ

1 голос
/ 15 сентября 2011

В первом случае вы закрыли сокет, во втором - нет, поэтому порт все еще занят.

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