超级精简版!QT网络通讯TCP服务器端代码,linux和win兼容,亲测可用

超级精简版!QT网络通讯TCP服务器端代码,linux和win兼容,亲测可用

1. 简介

  • 这篇文章还有个姐妹篇,写的客户端的代码!链接如下:

客户端代码

  • 服务器端和客户端,发送和接收部分是一样的。
  • 需要先建立一个服务器,等待客户端连接,连接成功后就可以通讯了。
  • 准备工作设置IP什么的,在客户端的文章里写了,这里直接看代码吧!

2. QT代码

注意:如果是Linux系统运行,需要把所有的qDebug改成qWarning。

  • .pro文件需要加入一行
	QT       += network
  • 还是先看界面,非常简单,就一个按钮。其他功能都在应用程序输出里。
    超级精简版!QT网络通讯TCP服务器端代码,linux和win兼容,亲测可用_第1张图片
  • 这个发送按钮在与客户端建立连接之前是禁用的,如果未连接时发送,程序会死机。
	ui->pushButton->setEnabled(false);//未连接时候,禁用发送按钮
    ui->pushButton->setEnabled(true);//连接后开启按钮
  • .h文件中需要定义两个套接字
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
}

工程连接如下:
工程下载链接

你可能感兴趣的:(QT网络通讯,qt,网络通信)