超级精简版!QT网络通讯TCP服务器端代码,linux和win兼容,亲测可用
1. 简介
- 这篇文章还有个姐妹篇,写的客户端的代码!链接如下:
- 服务器端和客户端,发送和接收部分是一样的。
- 需要先建立一个服务器,等待客户端连接,连接成功后就可以通讯了。
- 准备工作设置IP什么的,在客户端的文章里写了,这里直接看代码吧!
2. QT代码
注意:如果是Linux系统运行,需要把所有的qDebug改成qWarning。
- .pro文件需要加入一行
QT += network
-
还是先看界面,非常简单,就一个按钮。其他功能都在应用程序输出里。
-
首先是需要加载的头文件
#include <QTcpServer>
#include <QTcpSocket>
这个发送按钮在与客户端建立连接之前是禁用的,如果未连接时发送,程序会死机。
ui->pushButton->setEnabled(false);//未连接时候,禁用发送按钮
ui->pushButton->setEnabled(true);//连接后开启按钮
- .h文件中需要定义两个套接字
private slots:
void on_pushButton_clicked();//发送按钮
void ConnectToClient();//有连接加入的槽函数
void ReadInFormation();//有数据接收的槽函数
private:
Ui::MainWindow *ui;
QTcpServer *tcpServer;//定义一个套接字,服务器连接用的
QTcpSocket *tcpSocket;//定义一个套接字,发送接收数据用的
- 建立服务器,就三行。
tcpServer = new QTcpServer(this);//建立套接字
tcpServer->listen(QHostAddress::Any, 6666);//监听所有IP,本机端口号6666
connect(tcpServer, &QTcpServer::newConnection, this, &MainWindow::ConnectToClient);//有客户端连进来触发信号
- 连接建立的槽函数
void MainWindow::ConnectToClient()//客户端连接进来了
{
tcpSocket = tcpServer->nextPendingConnection();//获取套接字
QString ip = tcpSocket->peerAddress().toString();//获取IP
int port = tcpSocket->peerPort();//获取端口号
qDebug()<<QString("%1 %2 连接成功").arg(ip).arg(port);//打印IP和端口号
ui->pushButton->setEnabled(true);//连接后开启按钮
connect(tcpSocket,&QTcpSocket::readyRead,this,&MainWindow::ReadInFormation);//接收到数据触发的信号
}
- 发送接收的函数
void MainWindow::ReadInFormation()//接收到数据
{
QByteArray temp = tcpSocket->readAll();//收到的数据存放在temp里
qDebug()<<temp;//打印输出
}
void MainWindow::on_pushButton_clicked()//发送数据的按钮
{
tcpSocket->write("SB\r\n");//发送一个SB
}
工程连接如下:
工程下载链接