qt网络助手编写篇一:qt网络通信整理和测试

零、参考链接:

https://blog.csdn.net/weixin_43435307/article/details/107013008
https://blog.csdn.net/weixin_33860528/article/details/94117368
https://blog.csdn.net/yxy244/article/details/103510030

一、简介

在工作中经常使用网络助手,因此自己准备使用Qt编写一个网络助手,作为学习Qt编程的项目练习。

二、QT中TCP通信过程

在这里插入图片描述

解释
server_l服务器监听套接字
server_c服务器连接套接字
client客户端套接字

1、服务端通信过程

1、从ui界面中获取需要监听的ipport
2、创建监听套接字
3、开始监听
4、客户端连接以后提取连接套接字
5、使用连接套接字进行数据收发

2、客户端通信过程

1、创建客户端套接字
2、从ui界面获取服务端ipport
3、连接服务器
4、连接成功后进行数据收发

三、QTcpSocket状态变化过程

在这里插入图片描述
蓝色矩形框代表信号产生。

四、代码实现

1、UI界面布局

1、服务端

在这里插入图片描述

2、客户端

在这里插入图片描述

2、服务端实现

1、获取ip地址列表

QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName());
    QList<QHostAddress> addrList  = info.addresses();
    for(int i=0;i<addrList.count();i++){
        QHostAddress ip = addrList.at(i);
        if(QAbstractSocket::IPv4Protocol == ip.protocol()){
            ui->ip->addItem(ip.toString());
        }
    }
    ui->ip->addItem("127.0.0.1");

2、创建监听套接字

tcpserver = new QTcpServer(this);

3、监听

// 获取ip
QString ip = ui->ip->currentText();
QHostAddress addr(ip);
// 获取端口号
qint16 port = ui->port->text().toInt();
// 开始监听
tcpserver->listen(addr,port);

4、提取连接套接字

// 获取连接套接字
tcpsocket = tcpserver->nextPendingConnection();
// 提取客户端ip和端口号
QString ip = tcpsocket->peerAddress().toString();
quint16 port = tcpsocket->peerPort();

5、数据接收

QByteArray data = tcpsocket->readAll();
ui->reciveText->append(data);

6、数据发送

tcpsocket->write(ui->sendText->toPlainText().toUtf8());

3、客户端实现

1、创建套接字

tcpClient = new QTcpSocket(this);
tcpClient->abort();

2、连接服务端

tcpClient->connectToHost(ui->serverIp->text(),ui->serverPort->text().toUShort());

3、数据接收

QByteArray data = tcpClient->readAll();
ui->reciveData->append(data);

4、数据发送

cpClient->write(ui->sendData->toPlainText().toUtf8());

五、测试

在这里插入图片描述

六、说明

以上只测试TCP通信功能,没对异常进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值