定义

#define TCPSOCKET_MAX 3 

 

 声明private变量

QTcpServer *tcpServer;
QList<QTcpSocket*> tcpSocketList; 

 

声明public slots:

public slots:
    void recv_slot();
    void connect_slot(); 

 

//启动TCP服务
void MainWindow::on_pushButton_3_clicked()
{
    int tcpServerPort = ui->tcpServerPortText->text().toInt();
    //声明TCP服务
    this->tcpServer = new QTcpServer(this);
    //监听
    if(tcpServer->listen(QHostAddress::Any,tcpServerPort))
    {
        ui->pushButton_3->setEnabled(false);
        ui->pushButton_4->setEnabled(true);
    }
    //设置槽
    connect(tcpServer,SIGNAL(newConnection()),this,SLOT(connect_slot()));

}

//TCP服务连接事件
void MainWindow::connect_slot()
{

    if(tcpSocketList.count() <= TCPSOCKET_MAX)
    {
        QTcpSocket *tcpSocket = tcpServer -> nextPendingConnection();
        connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(recv_slot()));
        tcpSocketList.append(tcpSocket);
    }

}

//TCP接收事件
void MainWindow::recv_slot()
{
    for(int i=0 ; i<tcpSocketList.count() ; i++)
    {
        QByteArray byte;
        QTcpSocket *tcpSocket=tcpSocketList.at(i);
        byte = tcpSocket -> readAll();
        QString result = printByteArr(byte);
        if(result.length()>0)
            addLog("tcp rev:" +tcpSocket->peerAddress().toString()+":"+ result);

        tcpSocket->write(strToQByteArray(result.mid(0,16)+ "17 01 03 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"));
    }

}

//关闭TCP服务
void MainWindow::on_pushButton_4_clicked()
{
    tcpServer->close();
    ui->pushButton_3->setEnabled(true);
    ui->pushButton_4->setEnabled(false);

 

转载请注明:kenter原创

相关文章:

  • 2022-01-28
  • 2022-12-23
  • 2021-12-24
  • 2022-01-15
  • 2021-06-02
  • 2022-01-10
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
  • 2022-01-17
  • 2022-12-23
  • 2022-12-23
  • 2021-07-06
相关资源
相似解决方案