|
1
0
使用UDP及时接收数据包以清除接收缓冲区非常重要,否则可能会因缓冲区已满而导致数据包丢失。如果读取速度不够快,可能会淹没接收缓冲区。10%的下降率听起来很高,但这可能是由于您的代码。 在您的代码中,我看到Thread.Sleep(4000) 您应该确保数据包没有在接收缓冲区中等待。睡4秒钟有点多。我已经好几年没有做过很多TCP/UDP编码了,但我记得很清楚,当我为每个接收器使用一个单独的线程,并且在读取时被阻止时,我使用UDP的效果最好,这样操作系统就负责在数据准备就绪时立即唤醒我的线程。 至少,将Thread.Sleep(4000)降低到每秒(尝试250或更少),看看是否有所改善。如果是这样,你就走上了正确的轨道。可以增加OS级别的接收缓冲区大小,但这通常仅适用于极端情况,如果用户代码编写良好,则不需要这样做。 此外,我认为没有理由持续打开/关闭插座。保持打开。 |
|
|
2
0
这里的问题被证明是路由问题,因为PC由于另一端有类似的网络而变得混乱。 |
|
|
slim71 · C-通过套接字向客户端发送UDP消息 7 年前 |
|
|
alsaleem · 执行UDP套接字。接收开始收集还是可用? 7 年前 |
|
|
ilya · 使用iperf3测量STM32板上的UDP吞吐量 7 年前 |
|
|
Ephemera · 服务器能否直接连接其连接的两个套接字? 7 年前 |
|
|
Jamboree · 跨NAT的UDP客户端无法从服务器接收数据 7 年前 |
|
|
Niranjan Godbole · 无法在c中使用udp发送数据# 7 年前 |
|
|
en Lopes · Java UDP服务器不工作 7 年前 |
|
|
Iago SP · 如何在golang中发送假udp包 8 年前 |