Qt学习之TCP简单通信

今天学习了TCP通信,相比LINUX网络编程,Qt通信非常简单.

先上Qt Tcp通信的小菜,他们的结构.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();



是不是很简单,是这个栗子太渣而已.^ _ ^