методы accept (), close () на ServerSocket - PullRequest
0 голосов
/ 26 февраля 2012

Я создаю программу чата.У моего сервера есть кнопка, кнопка для запуска метода вызова сервера accept () на сокете сервера, кнопка для закрытия вызова сервера close () на сокете сервера.

Когда я снова нажимаю кнопку запуска, чтобы-принимать соединение в том же сокете, метод accept выдает SocketException Socket закрыт.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

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

Из документации Java на Socket см. Информацию о методе close:

После закрытия сокета он становится недоступным для дальнейшего использования в сети (т. Е. Не может быть повторно подключен или восстановлен).Необходимо создать новый сокет.

Закрытие этого сокета также закроет сокет InputStream и OutputStream.

0 голосов
/ 26 февраля 2012

Если ваш предыдущий сокет был успешно закрыт, то не должно быть проблем с повторным созданием этого сокета.Это будет работать в Java, потому что JVM освободит вас от мусора.

Если вам нужно несколько подключений к серверу (это может быть полезно, поскольку вы ведете чат), имейте это в виду.Функция accept на стороне сервера будет создавать новый сокет при каждом запросе.Таким образом, вы можете просто использовать потоки и передать новый сокет (созданный с помощью accept) потоку.

Если это не отвечает на ваш вопрос, я бы посоветовал вам перейти на веб-сайт Oracle:http://docs.oracle.com/javase/tutorial/

и переформулировать вопрос.

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