【问题标题】:UDP not dropping any packetsUDP不丢弃任何数据包
【发布时间】:2015-03-26 03:41:29
【问题描述】:

我有一个使用 UDP 进行通信的 C# 客户端和 C++ 服务器程序。现在我只是使用 127.0.0.1 (localhost) 来模拟一台机器上的通信。

问题是我在同一台机器上的客户端和服务器之间的 10,000 个数据包测试没有丢弃任何 UDP 数据包,所以我不知道如何编写重传代码,因为我无法让它丢弃数据包,但它会发生在不同机器上的客户端和服务器之间的真实场景中。

是不是因为客户端和服务器在同一台机器上,所以没有丢包?

【问题讨论】:

  • 是的。在环回连接上丢弃数据包非常困难。
  • if(rand() < RAND_MAX/8) /* don't send the packet */ else {send(...)}
  • 谢谢大家。 @immibis 啊,好吧,我在想我可以做这样的事情,谢谢
  • 看看clumsy,听起来它对你有用。

标签: c# c++ udp winsock


【解决方案1】:

UDP 通常不会在同一台机器上丢弃数据包。您可以做另一个技巧,而不是使用 rand() 函数方法。从发送方发送大数据包并在接收方代码中以较小的块接收。并在每次接收后使用睡眠功能。所以一个管道满了,你可能会注意到丢包

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2015-12-02
    • 2013-08-29
    相关资源
    最近更新 更多