什么是java.net.SocketTimeoutException:无法从远程连接接收close ack?

时间:2010-06-09 14:46:04

标签: java sockets p2p jxta

我正在通过LAN传输文件(如果你听说过,使用JxtaSocket)我收到了:

java.net.SocketTimeoutException:无法从远程连接接收close ack。 在net.jxta.socket.JxtaSocket.close(JxtaSocket.java:1046)

我想知道这首先发生的原因是什么。在我发送一个文件(2.9 MB)之后,我正以正常的速度收到此异常。所有其他文件都低于1 Mb并且工作正常。

另一方面,我认为可能是JXTA的错。

任何回复都将受到高度赞赏!

2 个答案:

答案 0 :(得分:1)

JXTA社区的一些成员在2.5版本中遇到过这样的问题,但它在2.6和2.7中已经消失了。这可以解释/解决这个问题。

答案 1 :(得分:0)

TCP是一种复杂的协议。

其中一部分是当客户端关闭其连接时,请求方(最初试图关闭的一方)必须等待来自另一方的确认,以确保远程方知道我们正在关闭连接。不幸的是,关闭握手通常不会正常发生(有时客户端只是关闭而不是正确地通过握手)。在实践中,这并不重要,因为所有重要的沟通都已完成。

这么长的故事,你最有可能看到的是一个行为不端的客户,但我不担心。

维基百科对TCP connection termination protocol

进行了很好的讨论