2013-05-20 4 views
2

У меня есть серверная программа, которая должна закрыть любые подключения, которые остаются, когда сервер выключается. Я знаю, мне нужно позвонить SocketChannel.close(). Мой вопрос в том, что мне также нужно закрыть Socket, связанный с SocketChannel, или если SocketChannel.close() делает это автоматически.Сокет SocketChannel.close() также закрыт?

ответ

-1

SocketChannel.close() должен закрыть розетку. Тем не менее, были некоторые ошибки вокруг этой проблемы (должны были быть решены давным-давно). http://bugs.sun.com/view_bug.do?bug_id=4960962. Другая ситуация, которая может вызвать проблемы: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6179351

+0

@EJP да, похоже, что это ошибка. Благодарю. – xagyg

+0

Ошибка, которую вы сейчас приводите, показывает «Дата разрешения: 2005-04-16». Если у вас были трудности в этой области, это почти наверняка связано с задержкой закрытия, упомянутой в моем ответе. – EJP

2

Конечно, он закрывает розетку. Для чего еще это нужно? Единственное исключение - когда канал зарегистрирован в Селекторе, когда фактическое закрытие отложено до следующей операции выбора.

Смежные вопросы