如何在Winsock中查找当前使用的UDP接收缓冲区大小
How to find currently used size of UDP receive buffer in Winsock
我有一个处于阻塞模式的UDP套接字,我有突发数据包,有些正在丢失。
- 如何在 winsock 的接收缓冲区中找出当前使用的大小?
- 如何了解系统是否正在丢弃数据包?
WSAIoctl 通过 FIONREAD 是这样记录的:
如果在 s 参数中传递的套接字是面向消息的(对于 例如,键入 SOCK_DGRAM),FIONREAD 返回报告总计 可供读取的字节数,而不是第一个数据报的大小 (消息)在套接字上排队。
我认为这回答了你的第一个问题。 至于第二个,我认为没有办法以编程方式解决这个问题。 应在应用程序中使用序列号来检测间隙,然后查看接收缓冲区大小,并猜测如果它接近满,则损失是由于缓冲区空间不足造成的。
任何套接字的接收缓冲区大小都是通过使用 SO_RCVBUF 选项调用 getsockopt() 给出
的我不明白如何在接收器处区分网络中丢失的数据包和在本地主机上丢弃的数据包。你只能说它没有到达,你需要一个比UDP更高级别的协议来告诉你,一个带有ACK或NACK的序列号协议。
相关文章:
- C++字符*缓冲区的大小
- 从udp接收帧对于人脸识别来说太慢
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- ostream过载时的缓冲区冲洗
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- Xaudio2在更改缓冲区或循环时弹出声音
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- 使用升压缓冲区使用 UDP 协议进行序列化和发送
- 增加 UDP 套接字中的接收缓冲区
- 套接字:在没有memcpy的情况下,使用recvfrom将UDP数据获取到字对齐的缓冲区
- 当接收缓冲区几乎满时,阻止UDP数据包被部分截断
- 如何检查已使用的 UDP 缓冲区状态
- boost::udp socket.recieve_from() 将数据追加到缓冲区的末尾
- 使用LibAV解码UDP流:缓冲区大小不足
- 谷歌协议缓冲区不适用于UDP?
- UDP套接字缓冲区溢出检测
- 如何在Winsock中查找当前使用的UDP接收缓冲区大小
- 来自UDP连接的第一个缓冲区包含垃圾-随后的连接是好的