tcp - Java 套接字何时发送 ack?

标签 tcp sockets

我的问题是,当接收方的套接字发送 ack 时?是应用读取socket数据的时候还是底层拿到数据放到buffer中的时候?

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

最佳答案

发生这种情况时,取决于操作系统 TCP 堆栈,因为 TCP 向应用程序提供流,所以在执行读/写操作的应用程序与在线路上发送的数据包和 TCP 确认之间没有保证 1:1 的相关性。

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

关于tcp - Java 套接字何时发送 ack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2173153/

相关文章:

node.js - socket.io 错误 - Web 套接字连接在建立连接之前关闭

iphone - NSInputStream 包装器通过指定的分隔符读取字符串

Java TCP IP 连接 - 服务器上没有任何显示

java - 许多 TIME_WAIT 无法获得 ESTABLISHED tcp 连接

c - sockaddr_in 的 pad 是做什么用的?

c++ - 可以读取 'select' 调用保持查找客户端套接字

python - `sock.recv()` 当连接在非阻塞套接字上死亡时返回空字符串

python - 带有虚假源 IP 地址的 TCP 连接

c# TCP 服务器客户端线程问题

php - 运行 QTcpServer,如何正确接收或发送数据?