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

How to determine/set socket buffer size?

本文关键字:缓冲区 套接字 设置 何确定      更新时间:2023-10-16

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

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

您可以使用

SO_RCVBUFSIZSO_SNDBUFSIZ选项设置setsockopt()套接字缓冲区大小,并且可以通过getsockopt()将其取回。

但是,我同意@JonathonReinhart的观点,即这不太可能解决您的真正问题。