首页 > > 我在编程路上遇到的一些问题 > 第1章 UDP丢包率问题

第1章 UDP丢包率问题(1/1)

目录

几周前,我们组就完成了UDP的双向通信,不过一直没有测试丢包率。和TCP不同的是,UDP无连接,在通信过程中容易丢包,对方就接收不到了。而TCP会是面向连接,不会丢包。

于是今天,我们组准备测试丢包率。我们在原有代码的基础上,新声明了许多变量,比如已接收到的包的编号,已接收到的包的个数,当然还有丢包率。

测试途中,遇到了如下问题:第一个发消息的那一方,再发消息时就对方就收不到了(并不是丢包了)。而第二个发消息的,就不会遇到这样的问题。

经过一行行代码的排查,锁定问题出在丢包率变量的初始化上。丢包率的代码是写在接收消息的线程里的,测试的是发送方的丢包率,因此计算的公式是:(己方发送的包的总数-对方收到的包的总数)/己方发送包的总数

因为当同时运行发送方和接收方时,两边的线程都同时启动了。假设第一个发消息的是发送方,它把第一条消息发给了接收方,接收方那边线程接受了消息,可是当代码运行到丢包率那里时,计算的分母是零,因为此时接收方还未发送过消息,而零是不能作为分母的。于是线程就一直卡在那里不出来,也就无法进入下一个线程接受消息了。

解决了以上问题,我们又遇到一个问题就是丢包率始终为零。不过应该是发送的字节太少的缘故,具体测试结果如何还要等明天。</p>

目录
返回顶部