如何确定/设置套接字缓冲区大小
How to determine/set socket buffer size?
我正在编写两个程序(在Visual Studio上),一个发送,一个接收UDP数据包(1,000字节)。目前,我的发送方正在发送一个 udp 数据包,休眠 1 毫秒,然后再发送另一个数据包。为了提高速率,我仅在发送大约 1 个数据包后才让发送方休眠 20 毫秒。问题是,如果我在每次睡眠前增加数据包的数量,接收方往往会错过数据包。所以我想如果我增加套接字缓冲区大小会更好?
我知道TCP是一个更安全的选择,但假设我只能使用UDP,我需要确保我可以以高速率发送数据包而不会丢失数据包,我该怎么办?如何检查我的套接字缓冲区大小是多少?目前我的程序只使用"sethost"和"bind",然后使用"sendto"来发送udp数据包。
您可以使用
SO_RCVBUFSIZ
或SO_SNDBUFSIZ
选项设置setsockopt()
套接字缓冲区大小,并且可以通过getsockopt()
将其取回。
但是,我同意@JonathonReinhart的观点,即这不太可能解决您的真正问题。
相关文章:
- 套接字读取后,我在缓冲区中看到意外输入
- 何时需要修改套接字的接收缓冲区大小?
- 为异步发送缓冲区保留内存(提升 asio 套接字)
- 套接字缓冲区到字符串
- 我正在编写一个简单的客户端套接字应用程序,但在连接后服务器收到一个空缓冲区
- 无法对套接字执行操作,因为系统缺少足够的缓冲区空间或队列已满
- 跨平台套接字发送,Linux 上的缓冲区常量无效* Windows上的常量字符*,最佳处理方式
- 为什么收到的缓冲区大小大于最初通过套接字发送的大小
- 套接字连接上的缓冲区溢出
- 增加 UDP 套接字中的接收缓冲区
- 从套接字读取到缓冲区
- 套接字:在没有memcpy的情况下,使用recvfrom将UDP数据获取到字对齐的缓冲区
- 页面对齐的套接字发送缓冲区
- C++套接字编程TCP/IP套接字缓冲区的最大大小
- 在Linux中发送套接字的缓冲区为空
- recv套接字中的前几个字节,以确定缓冲区大小
- 无法使用套接字显示接收到的缓冲区
- 如何确定/设置套接字缓冲区大小
- 为什么套接字未正确处理此缓冲区大小
- 如何在使用之前清除内部服务器套接字缓冲区的内容