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 套接字选项