QT网络编程

Qt 给用户提供了网络编程的接口,包括TCP、UDP、HTTP三种协议的API以及各种类,可以了解一下。

而在 QT 中想要使用网络编程,必须在pro文件中添加 network 模块,否则无法包含网络编程所需的头文件。

UDP

UDP是传输层的协议,该协议是无输出,不可靠,面向数据包,全双工的通信协议。

QT为 UDP 协议专门设置了两个类:QUdpSocket 以及 QNetworkDatagram 。

QUdpSocket类

该类是专门用于 Udp 的类,包含 Udp 协议所需的绑定、接收数据包、发送数据包等API。

bind(const QHostAddress&,quint16) 函数 绑定端口号 类似linux中的bind
receiveDatagram() 函数 返回一个 QNetworkDatagram类型的数据包 类似linux中的recvfrom
writeDatagram() 函数 发送一个QNetworkDatagram类型的数据包 类型linux中的sendto
readyRead 信号 当一个端口号可以读取时即可触发该信号 类似linux中的多路转接:select、poll和epoll等

QNetworkDatagram

该类表明一个数据包,可以从该类所实例化的对象中读取所需的数据、发送端的端口号和 ip 地址

QNetworkDatagram(const QByteArray&,const QHostAddress&,quint16) 方法 QNetworkDatagram的构造函数,用于创建一个对象
data() 方法 获取数据包中的数据,返回一个 QByteArray 对象
sederAddress() 方法 获取数据包发送者的 IP 地址
sederPort() 方法 获取数据包发送者的 端口号

和Linux不同的是,linux的接收和发送函数:recvfrom 和 sendto ,它们都需要一个  sockaddr 的结构体对象来获取发送端的 IP 地址和端口号,而QT则是将其拆开,数据包中直接包含对端的IP地址和端口号

UDP回显服务器

首先写服务器的代码,在 pro 文件添加 network 模块后,即可使用上述API。

在服务器一侧我们使用 listWidget 控件,用来显示所有接收的数据。 

然后在头文件中添加 QUdpSocket 对象,用来后续接收客户端的消息。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值