十九、TCP和UDP通信

1、QTcpServer

  tcp服务端的使用

(1)在pro文件中添加network模块

(2)定义槽函数,为QTcpServer对象的newConnection信号绑定槽函数,来监听客户端的新连接

(3)在槽函数中使用nextPendingConnection方法动态创建一个QTcpSocket对象

(4)为QTcpSocket对象的readyRead信号绑定槽函数,每次有客户端发送来新的消息便会触发此信号

(5)为QTcpSocket对象的stateChanged信号绑定槽函数,接收连接状态

(6)在连接状态的槽函数中创建QTcpSocket临时指针对象,使用sender方法来获取连接的客户端,sender方法返回发送信号的对象,然后使用deleteLater方法,释放客户端连接,避免内存浪费

(7)打印客户端ip地址使用QTcpSocket对象的peerAddress方法获取QHostAddress,然后使用toString方法转换为字符串,peerPort方法获取客户端端口,使用QString的静态方法number将端口转换为字符串

(8)使用QTcpSocket对象的read和write方法读取和发送数据

(9)QTcpServer的findChildren方法可以获取到连接的所有客户端的QTcpSocket对象

(10)QTcpServer的listen方法能够监听ip地址和端口,close方法停止监听,表示不会有新连接能连上,已经连接的客户端依旧能够发送消息

QTextBrowser:文本浏览框

2.QTcpSocket客户端

(1)创建对象

(2)接收消息绑定信号和槽readyRead信号

(3)连接状态改变的信号绑定槽函数,进行相应操作,stateChanged信号

(4)使用connectToHost函数连接服务器

(5)使用disconnectFromHost函数断开与服务器的连接

3.QUdpSocketUDP通信

(1)创建QUdpSocket对象

(2)为readyRead信号绑定槽

(3)pendingDatagramSize函数获取接收到数据的大小

(4)hasPendingDatagrams函数判断是否有数据报到来

(5)readDatagram函数读取指定ip和端口的主机发送的数据报

(6)bind函数绑定本机端口和ip

(7)abort函数解除本机绑定

(8)writeDatagram函数向指定主机的端口发送数据报

(9)QHostAddress::Broadcast表示广播,向局域网中的所有主机端口发送

(10)连接状态BoundState

posted @ 2023-07-18 00:14  稚终KINO  阅读(88)  评论(0)    收藏  举报