qt for android连接mysql_Qt开发小工具之二TCP调试工具

一、前言

TCP调试工具顾名思义用来调试TCP通信的,网上这样的工具N多,之前用.NET写过一个,无奈在XP下还要安装个.NET框架才能运行,索性这次用QT重写,发现QT写TCP通信比.NET还要便捷一些,运行效率貌似要高,还能识别客户端断开,这个真神奇,除了断电之外。

二、项目环境

项目名称:TCP调试工具

开发环境:WIN7+QT4.7+QT CREATOR2.8+MINGW

技术实现:通过QTcpServer和QTcpSocket类,解析协议并作出处理

实现功能:ASCII格式和16进制数据收发,支持多个客户端收发消息,可以指定客户端发送消息,动态增加和移除已连接客户端。

三、效果图

6b4f2610c3430cb7e9fcab2638db2a13.png
59d0049ce86adfc3eaac2268d7619a57.png
97a128b9a1affa0667bc8392856036d9.png

四、开发步骤

第一步:添加主界面,布局好主界面,并命名好控件,例如服务端的清空按钮命名为btnClearServer,客户端的清空按钮命名为btnClearClient。

第二步:编写服务端中客户端通信类,服务端可以接受多个客户端的连接,这里采用了同步通信机制,先编写myTcpClient类,封装了客户端连接断开接收数据的操作。

第三步:编写服务端通信类。

#include "mytcpserver.h"#include  myTcpServer::myTcpServer(QObject *parent) : QTcpServer(parent){ this->clientCount=0;} void myTcpServer::incomingConnection(int handle){ myTcpClient *client=new myTcpClient(this,handle); client->setSocketDescriptor(handle);  connect(client,SIGNAL(ClientReadData(int,QString,int,QByteArray)),this,SIGNAL(ClientReadData(int,QString,int,QByteArray))); connect(client,SIGNAL(ClientDisConnect(int,QString,int)),this,SLOT(DisConnect(int,QString,int)));  emit ClientConnect(handle, client->peerAddress().toString(),client->peerPort());  ClientList.append(client);//将新的连接添加到客户端列表 ClientID.append(handle);//将新的连接的ID添加到客户端ID列表 clientCount++;  //存储当前连接 CurrentClient=client;} void myTcpServer::DisConnect(int clientID,QString IP,int Port){ for (int i=0;iwrite(data); break; } }} //对当前连接发送数据void myTcpServer::SendDataCurrent(QByteArray data){ //如果没有一个存在的连接,则不处理 if (clientCount<1){return;} CurrentClient->write(data);} //对所有连接发送数据void myTcpServer::SendDataAll(QByteArray data){ for (int i=0;iwrite(data); }} void myTcpServer::CloseAllClient(){ for (int i=0;iclose(); i--;//不然的话,永远只会断开第一个连接 }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值