【发布时间】:2014-12-16 08:28:22
【问题描述】:
我用 C 编程语言编写了简单的多播服务器和客户端程序。然后我通过以太网接口将服务器连接到启用多播的路由器(支持dd-wrt)。客户端通过无线接口连接到路由器。我每 10 毫秒从服务器向客户端发送一次数据包。数据包大小为 512 字节。问题是客户端只接收到我在 Wireshark 中也可以看到的 40% 的数据包。这不是无线和丢包的问题,而是多播的问题,我不知道问题出在哪里。我还检查了数据速率,一切似乎都很好。有什么建议吗?谢谢
【问题讨论】:
-
取决于您如何生成数据包。最明显的 UDP 数据包丢失是由于缓冲区溢出造成的。
-
我能做些什么来修复缓冲区溢出?数据包是 char[512],使用 sendto 函数发送
-
您需要在接收器套接字中设置 SO_RCVBUF 选项。但是,没有看到代码,我不能确定。
-
代码很大,但我可以复制你感兴趣的部分,告诉我哪一部分和哪一边:服务器或客户端
-
我应该在客户端设置 SO_RCVBUF 哪个值?如何计算缓冲区?
标签: c sockets networking multicast