我正在编写两个程序(在visual studio上),一个发送UDP数据包,另一个接收UDP数据包(1000字节)。目前,我的发送者正在发送一个udp数据包,休眠1ms,然后再发送另一个数据包。为了提高速率,我只在发送了大约20个数据包后让发送者休眠1毫秒。问题是,如果我在每次睡眠之前增加数据包的数量,接收器往往会丢失数据包。所以我想如果我增加套接字缓冲区的大小会更好?
我知道TCP是一个更安全的选择,但假设我只能使用UDP,并且我需要确保可以高速发送数据包而不会丢失数据包,我该怎么办?如何检查我的套接字缓冲区大小?目前我的程序只使用了'sethost‘和'bind',然后是'sendto’来发送udp数据包。
发布于 2015-01-20 14:38:25
您可以使用setsockopt()使用SO_RCVBUFSIZ或SO_SNDBUFSIZ选项设置套接字缓冲区大小,并可以通过getsockopt()将其取回。
然而,我同意@JonathonReinhart的观点,即这不太可能解决你真正的问题。
https://stackoverflow.com/questions/28038806
复制相似问题