如果数据包未发送到另一端系统,是否等待发送?C send()
我正在使用Linux std套接字上发送来通过网络写入数据包。发送调用、缓冲数据和“始终”返回大于0的值。将问题发送到操作系统和较低级别。 如何停止发送呼叫并等待数据包传送到另一端系统?等待TCP确认之类的如果数据包未发送到另一端系统,是否等待发送?C send(),c,linux,sockets,networking,send,C,Linux,Sockets,Networking,Send,我正在使用Linux std套接字上发送来通过网络写入数据包。发送调用、缓冲数据和“始终”返回大于0的值。将问题发送到操作系统和较低级别。 如何停止发送呼叫并等待数据包传送到另一端系统?等待TCP确认之类的 if (send(broker->socket, packet, sizeof(packet), 0) < sizeof(packet)){ return -3; } if(发送(代理->套接字,数据包,sizeof(数据包),0)
if (send(broker->socket, packet, sizeof(packet), 0) < sizeof(packet)){
return -3;
}
if(发送(代理->套接字,数据包,sizeof(数据包),0)
测试内容如下:
开始发送数据包,移除以太网,重新连接。谢谢,对不起,我的英语不好 没有真正可靠的方法来确定远程对等方是否确认了您的数据。事实上,即使远程TCP确认您的数据,也不意味着远程进程会读取数据。最简单的方法是实现一种应用层ACK,对等方发回一个字节信号“ok,明白了”
- 您调用
,它几乎立即返回send
- 此时内核开始工作,试图推送数据
- 您调用
哪个块recv
- 远程端接收数据并发回一些数据,确认数据
- 您的
解锁recv