Java套接字何时发送确认?

时间:2010-01-31 20:20:31

标签: tcp sockets

我的问题是,当接收方的套接字发送确认时?在应用程序读取套接字数据时或底层获取数据并将其放入缓冲区时?

我想要这个,因为我希望双方应用程序知道对方是否接收了数据包。

3 个答案:

答案 0 :(得分:4)

当发生这种情况时,由操作系统TCP堆栈决定,因为TCP向应用程序提供流,在执行读/写操作的应用程序与在线路上发送的数据包和TCP确认之间没有明确的1:1关联。 / p>

如果您需要确保对方已收到/处理了您的数据,您需要将其构建到您的应用程序协议中 - 例如发送回复,说明已收到数据。

答案 1 :(得分:3)

TCP ACK用于确认传输层而非应用层的TCP数据包。只有您的应用程序可以明确表示它还处理了缓冲区中的数据。

答案 2 :(得分:0)

TCP / IP(以及因此java套接字)将保证您成功发送数据或最终获得错误(在java的情况下例外)。