QT之网络通信实现

QT之网络通信实现
服务端:QTcpServer
客户端:QTcpSocket
网络通信的核心在我看来就是建立连接和收/发数据。
一、建立连接
条件:IP地址 + 端口号
客户端申请连接:
QTcpSocket::connectToHost(IP,port);//连接成功就会触发connected()信号;
因为QTcpSocket继承QAbsractSocket().所以,我们也可以用QAbstractSocket::state()来获取网络的socket状态。
二、客户端发送数据
因为QAbstractSocket继承QIoDevice,则发送数据可用QIoDevice::write(QByteArray & byteArray);
三、客户端接收数据
因为当设备写入一个有效数据时会触发readyRead()信号,所以,服务端可以捕获该信号时,获取信息。
服务端:QTcpServer
当申请的连接是有效的时候,会触发newConnection()信号,此时,我们可以通过捕获该信号来获取客户端的socket。
方法:QTcpServer::nextPendingconnection();
其返回值为QTcpSocket *的对象,然后我们根据捕获该对象的readyRead()信号,在与之关联的槽函数里面通过readAll()函数来获取客户端的数据,同理,我们也可以通过write()函数来给客户端发送数据,客户端也可以通过捕获readyRead()信号,在与之关联的槽函数里面通过readAll()函数来获取服务端的数据。
而项目从里面如此复杂只是对发送的数据作了约束而已,即定规则(协议),然后封装、解析发送。

你可能感兴趣的:(QT之网络通信实现)