对tcp测试丢包率没必要,况且丢包率跟网络环境有关,检查下数据接收的完整性,以及解包的合理性
流程:基站 <->中转 <->客户端 协议:TCP 实现方式:中转为TCP SERVER,接收来自基站和客户端的数据,并将数据转发至另一方。 验证方式:基站发起发送,数据格式内包含一个字节的索引值(起始值为0)和256个字节(依次0X00~0XFF),发送至中转后,立即转发至客户端,客户端收到后,验证包格式无误后,将索引值增加,并连带256个字节(从索引值开始,依次累加)发送至中转。。。往复测试 另外,你这个实际测的是你的中转的稳定性和在测试环境下的性能指标而已。
楼主的意思是,想要知道TCP连接,尽管连接上,想知道有没有在过程中丢包重传 上层可以用socket的tcp解决 下层用winpcap的统计模式+正则表达式解决
引用 14 楼 wizardk 的回复: 用TCP的方式,错误重发,保证不了? 现在就是测试,怕网络质量不好的时候数据丢失嘛,需要一个测试方法。因为要给客户长期使用的东西,需要全面保证质量。
用TCP的方式,错误重发,保证不了?
TCP,你只需要保证接收完整就好了,传输过程底层已经做了丢包重传机制,不需要你自己做 发送接收要有自己的协议,每个包加上自己的包长,来保证接收完全
引用 10 楼 wizardk 的回复: 你的最终目的到底是为了获取丢包率还是保证低丢包率? 最终目的是保证低丢包率,途径就是测试当前程序的丢包率,如果还ok,那就ok了。交差。如果不行,就需要修改了。
你的最终目的到底是为了获取丢包率还是保证低丢包率?
引用 6 楼 wizardk 的回复: 要想验证丢包率,建议你使用UDP这种无连接的方式,因为TCP的握手、连接确认、接收确认等报文都会引起额外的网络负荷。发送端发送带索引的报文,失败不重发,接收端依据索引判断是否丢包。 我的目的不是为了学习测试丢包率,而是已经实现了一个数据转发程序,在交给客户使用之前,公司需要进行一下测试,看看我们的转发过程是否会造成数据的丢失。也就是数据发送的丢包或者我们中间转发过程的处理不当或不及时造成的数据丢失! 程序的功能是转发,从一个服务器接收数据,然后转发给一个客户端。先作为一个客户端从服务器获得数据,然后以服务器的身份发给其他的客户端。
如果数据不大的话可以定义一个结构体: struct DATAPACK { int nIndex; char pData[1024]; }; 发送端发送DATAPACK *并填充nIndex,接收端检验nIndex就可以了!!
要想验证丢包率,建议你使用UDP这种无连接的方式,因为TCP的握手、连接确认、接收确认等报文都会引起额外的网络负荷。发送端发送带索引的报文,失败不重发,接收端依据索引判断是否丢包。
18,356
社区成员
64,214
社区内容
加载中
试试用AI创作助手写篇文章吧