如果接收者的rcvbuf在UDP下已满,如何进行套接字sendto()阻止?

时间:2016-04-26 01:52:42

标签: sockets

所以我试图向服务器发送100000个udp数据包,每个数据包大约20个字节。 我的服务器需要对每个数据包进行一些处理,所以现在好像rcvbuf只能容纳~1000个数据包,因为服务器接收的速度太慢了,我猜其余的数据包因为它而被丢弃。

无论如何判断接收方的数据包队列是否已满,以便让我的发送方等待它?

1 个答案:

答案 0 :(得分:4)

你不能。

根据定义,UDP是一种不可靠的数据报协议,无论如何都没有流量控制。

如果希望发送方在接收方已满时阻止,请使用TCP连接。 UDP是无连接的。发件人没有关于接收器状态的信息。所有发送者都发送数据包。 UDP不会对接收器的状态提供任何反馈。如果要实现任何类型的流控制,则必须在UDP之上自行设计。