超级精简版!QT5网络通讯TCP客户端代码,linux和win兼容,亲测可用
1. 简介
网络通讯最好是选用TCP协议,没有为什么,用就对了。
关于QT的TCP程序不算难,网上有好多大佬都写过,我也参考了大佬的程序。
这次公司的项目是一个不需要界面的TCP通讯程序,借此机会我就想搞一个最最基本的模板出来。
整个工程没有一行多余的代码,新手福利(我自己就是新手)。
2. 准备工作
首先准备两台电脑,Linux或者Win都可以。两台都可以联网,两台电脑的IP设置成同一号段。
例如:服务器端IP:192.168.1.10;客户端IP192.168.1.7;
一条网线直接连接两台电脑的网口。或者用服务器也可以。
3. QT代码
注意:如果是Linux系统运行,需要把所有的qDebug改成qWarning。
-
先看界面
点击连接,可以连接到主机。
连接成功,打印“连接成功”,红灯变绿(这个就是多余代码)。
点击发送,会发送一句“SB”。
-
.pro文件
在.pro文件中添加一行。
QT += network
- 初始化
tcpSocket = new QTcpSocket(this);//定义一个套接字
connect(tcpSocket,&QTcpSocket::readyRead,this,&MainWindow::readMessage);//连接接收中断函数
connect(tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(displayError(QAbstractSocket::SocketError)));//连接错误提示函数
ui->IP_lineEdit->setText("192.168.1.10");//设置默认IP
ui->Port_lineEdit->setText("6666");//设置默认端口号
- 连接服务器端,就三行
void MainWindow::on_Connect_pushButton_clicked()//连接服务器的槽函数 按键触发
{
tcpSocket->abort();//取消已有连接
tcpSocket->connectToHost(ui->IP_lineEdit->text(),ui->Port_lineEdit->text().toInt());//连接到主机,按输入的IP和端口号
connect( tcpSocket,&QTcpSocket::connected,this,&MainWindow::connectToServer );//连接信号槽,当连接成功时候触发
}
- 发送数据,就一行
void MainWindow::on_Send_pushButton_clicked()//发送数据的槽函数 按键触发
{
tcpSocket->write("SB\r\n");//发送数据
}
- 接收数据并打印,就两行
void MainWindow::readMessage()//接收数据的槽函数
{
QByteArray temp = tcpSocket->readAll();//接收数据
qDebug()<<temp;//打印数据
}
4. 总结
非常简单易懂,工程下载链接在下面。
工程下载链接
后续会写一个服务器端的代码。
服务器端代码