Qt學習之TCP簡單通信

今天學習了TCP通信,相比LINUX網絡編程,Qt通信非常簡單.

先上Qt Tcp通信的小菜,他們的結構.

是吧,他們的結構非常簡單.當然這張圖也是"盜"的.再次說明我博客很多東西都是各位路過大牛使用過的,僅僅是想讓自己忘記的時候能想起來,讓我和一樣剛學習這塊的參考.

不多說了,結構看明白後,自然是上代碼:

服務端:

1:創建 監聽.

tcpServer = new QTcpServer(this);
tcpServer->listen(QHostAddress::Any, 8000);
server connect success,will trigger "newConnection" signal.


connect(tcpServer, &QTcpServer::newConnection,
            [=]()
            {
                tcpsocket = tcpServer->nextPendingConnection();
                QString IP = tcpsocket->peerAddress().toString();//得到IP地址
                qint16 port = tcpsocket->peerPort();//得到端口
                QString temp = QString("[%1:%2]:success connect").arg(IP).arg(port);
                ui->RecvTextEdit->setText(temp);//將基本信息打印出來.
		//下面這部分是:當有數據發送過來時,讀取數據顯示.<通信部分>

                connect(tcpsocket, &QTcpSocket::readyRead,
                        [=]()
                        {
                            QByteArray array = tcpsocket->readAll();
                            ui->RecvTextEdit->append(array);
                        }
                        );
            }
            );

服務端發送部分:

    QString str = ui->SendTextEdit->toPlainText();
    tcpsocket->write(str.toUtf8().data());
關閉端口:
    tcpsocket->disconnectFromHost();
    tcpsocket->close();




好了,上面就是服務端的基本設置,下面開始客戶端.
首先創建socke,建立連接:
    QString str = ui->IpAddressLineEdit->text();
    qint16 port = ui->PortLineEdit->text().toInt();
    tcpsocket->connectToHost(QHostAddress(str), port);

當連接成功時,會觸發connect信號.
    tcpsocket = new QTcpSocket(this);
    connect(tcpsocket, &QTcpSocket::connected,
            [=]()
            {
                ui->RecvTextEdit->setText("success create connect\n");
            }
            );
發送部分:
    QString str = ui->SendTextEdit->toPlainText();
    tcpsocket->write(str.toUtf8().data());

接收部分:
    connect(tcpsocket, &QTcpSocket::readyRead,
            [=]()
            {
                QString str = tcpsocket->readAll();
                ui->RecvTextEdit->append(str);
            }
            );

關閉端口:
    tcpsocket->disconnectFromHost();
    tcpsocket->close();



是不是很簡單,是這個栗子太渣而已.^ _ ^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章