Как говорится в названии - если я хочу закрыть соединение сокета, достаточно ли, если я просто позвоню mySocket.close()
? Что будет с другой стороны?Is Socket.close() считается чистым способом завершения соединения?
Или, если это не путь, что такое? Должен ли я послать какое-то сообщение «закончить» через сокет, чтобы другая сторона знала, что он тоже должен закончиться?
Бонус вопрос: ява Документации говорит
Закрытие этого сокета также закроет InputStream сокета и OutputStream.
Таким образом, закрытие сокета достаточно, или я должен явно закрывать потоки (при условии, что я не использую try-with-resources
, конечно)?
Это определенно отвечает на мой вопрос о бонусе и благодарит вас за это. Но это не отвечает на мой главный вопрос. – NPS
Посмотрите на мой отредактированный anwser. –
Итак, подведем итог: 'Socket.close()' ** это ** чистый путь, но я ** также ** должен заботиться о вещах с другой стороны (проверьте «-1»/Исключение и дескриптор он, также вызывающий 'Socket.close()'). Если я использую обтекатели потоков, мне также необходимо явно закрыть их. Это верно? – NPS