QUdpSocket BindFlag各个元素意义

19 篇文章 1 订阅

BindFlag 这些值可以组成不同的标志,传递给QUdpSocket::bind()函数来修改bind()的特性。BindMode 是typedef for QFlags<BindFlag>。它是BindFlag值得或操作。

 

1、QUdpSocket::DefaultForPlatform = 0

a. 当前平台的默认选项

b. 在Unix和Mac OS上,该选项等同于DontShareAddress + ReuseAddressHint;在Windows上等同于ShareAddress

 

2、QUdpSocket::ShareAddress = 1

a. 许其他服务绑定同样的地址和端口

b. 当多进程通过监听同一地址和端口,进而共享单个服务的负载时,将十分有用(例如:一个拥有几个预先建立的监听者的WEB服务器能够改善响应时间)。不过,由于任何服务都允许重新绑定(rebind),该选项应该引起某些安全上的考虑

c. 需要注意的是,把该选项和ReuseAddressHint结合,也会允许你的服务重新绑定一个已存在的共享地址

d. 在Unix上,该选项等同于SO_REUSEADDR;在Windows上,该选项被忽略

 

3、QUdpSocket::DontShareAddress = 2

a. 采用专有的方式绑定某个地址和端口,其他任何服务都不能再重新绑定

b. 通过该选项,确保绑定成功,指定的服务将是地址和端口唯一监听者,就算是拥有ReuseAddressHint的服务也不允许重新绑定

c. 在安全性上,该选项优于ShareAddress,但是在某些操作系统上需要管理员的权限才能运行

d. 在Unix和Mac OS上,绑定地址和端口的默认行为是非共享,所以该选项会被忽略;在Windows上,等同于SO_EXCLUSIVEADDRUSE套接字选项

 

4、QUdpSocket::ReuseAddressHint =

a. 为QUdpSocke提供提示,即在地址和端口已经被其他套接字绑定的情况下,也应该试着重新绑定

b. 在Unix上,该选项被忽略;在Windows上等同于SO_REUSEADDR 套接字选项

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QUdpSocket 是 C++ Qt 框架中的一个类,用于实现 UDP(User Datagram Protocol)套接字通信。UDP 是一种无连接的、不可靠的传输协议,适用于对数据传输延迟要求较低、可容忍丢失或乱序的场景。 QUdpSocket 类提供了发送和接收 UDP 数据报的方法,并支持多主机之间的通信。它可以在客户端和服务器之间进行双向通信,也可以用于广播和多播的应用。 可以使用 QUdpSocket 类的实例来创建一个 UDP 套接字,并通过调用相应的函数来发送和接收数据报。常用的函数包括 bind() 绑定本地地址和端口、readDatagram() 读取数据报、writeDatagram() 发送数据报等。 以下是一个使用 QUdpSocket 类实现简单 UDP 通信的示例代码: ```cpp #include <QtNetwork> int main() { // 创建 QUdpSocket 对象 QUdpSocket udpSocket; // 绑定本地地址和端口 udpSocket.bind(QHostAddress::LocalHost, 12345); // 发送数据报 QByteArray datagram = "Hello, World!"; udpSocket.writeDatagram(datagram, QHostAddress::LocalHost, 6789); // 接收数据报 while (udpSocket.hasPendingDatagrams()) { QByteArray receivedDatagram; receivedDatagram.resize(udpSocket.pendingDatagramSize()); udpSocket.readDatagram(receivedDatagram.data(), receivedDatagram.size()); qDebug() << "Received datagram:" << receivedDatagram; } return 0; } ``` 以上代码创建了一个 UDP 套接字对象 udpSocket,并将其绑定到本地地址和端口 12345。然后使用 writeDatagram() 函数发送数据报给本地地址和端口 6789。接下来使用 readDatagram() 函数接收数据报,并打印在控制台上。 这只是一个简单的示例,QUdpSocket 类还提供了许多其他功能和函数,可以根据需求进行更复杂的 UDP 通信实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值