09-用Qt开发KCP通讯测试工具(KCP测试工具)

一、KCP简介

KCP通信是一种利在udp通信的基础上实现的一套模拟Tcp通信的协议。
KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果的一种实时性强的协议。

二、开发基础与环境

本例子是在skywind3000/kcp的基础上作了一个图形测试工具。
skywind3000/kcp的源码在如下链接:
https://github.com/skywind3000/kcp
本例开发环境:Qt + QtCreater使用C++开发。由于Qt的跨平台性,在Qt所支持的平台上本图形Kcp测试工具都可以成功编译运行。(测试过:MacOs和Windows)。

三、软件架构设计

本工具支持开启服务端和客户端,同时在每个端又支持原始UDP通信、Kcp默认、Kcp普通、Kcp快速模式。

  1. 服务端和客户端如下图所示:
    在这里插入图片描述
    在这里插入图片描述

四、源代码获取

本工具的示例源代码地址如下,使用MIT开源协议,其源码可以用于商业和非商业。

git clone https://github.com/robert1207/qt\_kcp\_tool

克隆完以上源码之后,还需要克隆一个打印依赖库:
切换的以上源码的如下目录

qt_kcp_tool/src/thirdparty

然后执行一下克隆命令:

git clone https://github.com/robert1207/MyLog

五、使用与测试方法

  1. 开启软件后,选择(udp或kcp)模式,然后选择服务端模式,然后点击开始即可。
  2. 开启另外一个本软件实例,选择(udp或kcp)模式,然后选择客户端模式,然后点击开始即可。
  3. 使用客户端和服务端的发送和接受窗口即可进行通信测试,通信支持字符串与16进制传输。

六、本KCP测试工具存在的问题

测试发现的问题,在Kcp模式下,客户端和服务端建立正常通行之后,服务端保持不动,在客户端点击“关闭”,然后再次点击“打开”,然后给服务端发送数据。发现服务端无法接收到数据。经过调试发现,基础的Udp通讯是正常了,服务端是收到了客户端发过来的Udp数据,但是从udp收到的数据传输给Kcp的库之后,Kcp并没有给返回数据,从而表现为服务端的软件在客户端重启之后会收不到数据。但是客户端连续继续发送,服务端就会恢复正常接受显示。有关这个Kcp通讯的现象无法理解,也并没有深入了解。(现在确定的时候除去Kcp的部分其他部分都是正常无误的)(当然kcp服务端和客户端建立之后,不断开的情况下,Kcp通讯是正常完整的);

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值