qt的TCP连接demo

在这里插入图片描述

CMAKE添加network支持

find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Network) #寻找network包
target_link_libraries(TCPServer PRIVATE Qt${QT_VERSION_MAJOR}::Widgets
    Qt${QT_VERSION_MAJOR}::Network  #添加network支持
)

Client端

连接函数

void MainWindow::on_pBt_connect_clicked()
{
    if(ui->pBt_connect->text() == tr("连接服务器")){
        QString ip = ui->lineEdit_IP->text();
        int port = ui->lineEdit_PORT->text().toInt();

        socket->abort();//取消已有连接
        socket->connectToHost(ip, port);
        bool isconnected = socket->waitForConnected();
        if(isconnected){
            ui->textEdit_display->append("连接服务器成功");
            ui->pBt_connect->setEnabled(true);
            ui->pBt_connect->setText("断开连接");
            connect(socket,&QTcpSocket::readyRead,this,&MainWindow::ReadData);
        }
        else
            ui->textEdit_display->append("连接失败");
    }
    else{
        ui->pBt_connect->setText("连接服务器");
        ui->pBt_connect->setEnabled(false);
        socket->disconnectFromHost();
    }

}

server端

监听端口

void MainWindow::on_pBt_listen_clicked()
{
    if(ui->pBt_listen->text() == tr("监听")){
        int port = ui->lineEdit_PORT->text().toInt();
        if(!server->listen(QHostAddress::Any,port)){
            qDebug() << server->errorString();
            return;
        }
        else
            ui->pBt_listen->setText("取消监听");
    }
    else
    {
        socket->abort();
        server->close();
        ui->pBt_listen->setText("监听");
    }
}

连接客户端


void MainWindow::ConnectClient()
{
    //获取客户端连接
    while (server->hasPendingConnections()){
        socket = server->nextPendingConnection();//获取连接的socket
        QString str = QString("%1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort());
        ui->textEdit_display->append(str+"连接成功");
        ui->comboBox_client->addItem(str);
        ui->comboBox_client->setItemData(ui->comboBox_client->count()-1,socket->socketDescriptor());//保存socket描述符
        connect(socket,&QTcpSocket::readyRead,this,&MainWindow::ReadData);//接收数据
    }
}

完整代码地址:https://github.com/ggstar00/QtTcpDemo/

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值