如何确定/设置套接字缓冲区大小?

时间:2015-01-20 06:11:11

标签: c++ sockets udp buffer

我正在编写两个程序(在visual studio上),一个发送,一个接收UDP数据包(1,000个字节)。目前,我的发送方正在发送udp数据包,在发送另一个数据包之前休眠1毫秒。为了提高速率,我发送了大约20个数据包后发送器只睡了1毫秒。问题是如果我在每次睡眠之前增加数据包的数量,接收器往往会错过数据包。所以我想如果我增加套接字缓冲区大小会更好吗?

我知道TCP是一个更安全的选择,但我们假设我只能使用UDP,我需要确保我能够以高速率发送数据包而不丢失数据包,我该怎么办?我如何检查我的套接字缓冲区大小是多少?目前我的程序只使用了' sethost'并且'绑定',然后是' sendto'发送udp数据包。

1 个答案:

答案 0 :(得分:1)

您可以使用setsockopt()SO_RCVBUFSIZ选项使用SO_SNDBUFSIZ设置套接字缓冲区大小,然后通过getsockopt()将其恢复。

但我同意@JonathonReinhart认为这最不可能解决你的真正问题。