首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用新QUdpSocket重新绑定

使用新QUdpSocket重新绑定
EN

Stack Overflow用户
提问于 2011-01-14 23:53:25
回答 1查看 3K关注 0票数 0

我有一个网络应用程序,它使用UDP广播进行设备发现,但一次只接受一个连接。因此,当建立新的TCP连接时,我删除了用于发现的QUdpSocket。

但是,当远程设备断开连接时,我想创建一个新的QUdpSocket并再次开始侦听:

代码语言:javascript
复制
    // Set up a UDP server to respond to any "discovery" messages:
    udpServer = new QUdpSocket(this);
    if (udpServer -> bind(QHostAddress::Any, DISCOVERY_PORT))
        connect(udpServer, SIGNAL(readyRead()),
                this,      SLOT(beDiscovered()));
    else
    {
        fprintf(stderr, "UDP port not bound successfully: %d, ", udpServer ->error());
        fprintf(stderr, udpServer ->errorString().toLocal8Bit());
        fprintf(stderr, "\r\n");
        fflush(stderr);
#ifdef WIN32
        _commit(_fileno(stderr));
#else
        fsync(_fileno(stderr));
#endif
    }

但是,重新绑定失败,代码为8,“绑定的地址已在使用中”。

那么,我如何确保当‘旧的’QUdpSocket被删除时,它会完全释放它绑定的地址呢?

或者,我应该绑定QUdpSocket::ShareAddress还是QUdpSocket::ReuseAddressHint?这似乎并不正确,因为两者都没有真正描述我想要的行为,即在其生命周期内为我的QUdpSocket提供独占绑定,而且在任何情况下,QUdpSocket::ShareAddress都应该是Windows上的默认设置。

谢谢,斯蒂芬。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-15 00:20:04

...so换句话说,这个问题已经自己回答了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4692936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档