Что такое java.net.SocketTimeoutException: не удалось получить закрытое подтверждение от удаленного подключения? - PullRequest
1 голос
/ 09 июня 2010

Я передаю файл через локальную сеть (используя JxtaSocket, если вы слышали об этом), и я получаю:

java.net.SocketTimeoutException: Не удалось получить закрытое подтверждение от удаленного подключения.at net.jxta.socket.JxtaSocket.close (JxtaSocket.java:1046)

Я хотел бы знать, по каким причинам это может произойти в первую очередь.Я получаю это исключение в обычном темпе, после того как я отправляю один файл (который составляет 2,9 МБ).Все остальные файлы имеют размер менее 1 МБ и работают нормально.

С другой стороны, возможно, это ошибка JXTA.

Любой ответ будет высоко оценен!

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

Некоторые члены сообщества JXTA испытывали такие проблемы с выпуском 2.5, но он исчез в 2.6 и 2.7. Это может объяснить / решить это.

0 голосов
/ 09 июня 2010

TCP - это сложный протокол.

Одна часть этого состоит в том, что когда клиенты закрывают свое соединение, запрашивающая сторона (сторона, которая первоначально пыталась закрыть) должна ждать подтверждения от другой стороны, чтобы убедиться, что удаленная сторона знает, что мы закрывают соединение. К сожалению, обычно рукопожатие при выключении не происходит должным образом (иногда клиенты просто закрываются, вместо того, чтобы правильно проходить рукопожатие). На практике это не имеет большого значения, потому что все важные коммуникации сделаны.

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

В Википедии есть хорошее обсуждение протокола завершения соединения TCP

...