首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Qt在服务器客户端程序中设置全局单播地址

无法使用Qt在服务器客户端程序中设置全局单播地址
EN

Stack Overflow用户
提问于 2017-07-28 11:05:33
回答 2查看 235关注 0票数 1

我是IPv6的新手,我会详细解释我的问题。使用Qt,我开发了使用Qt的Server客户端程序。

->I在服务器和客户端都使用本地链接地址。

->And的ip地址在不同的终端之间发生变化,如果我从三个终端运行服务器,服务器的IP地址和三个终端的ip地址是不同的,并且客户端有不同的ip地址。

->I希望从客户端程序中发现准确/当前的服务器地址,以便在运行时与服务器连接。

我该怎么做,请建议。

第二个问题是,关于从本地链路到全球单播地址的转换,IP-6 over显示可能会工作,因为全局链接将暴露在整个网络上。

在本例中,我试图更改以下代码:前面的代码: QHostAddress地址=QHostAddress::AnyIPv6 6;服务器启动并保持侦听状态。

手动分配以下代码的全局Unicast地址。address.setAddress("2001:0DB8:0000:0002:0022:2217:FF3B:118C");地址;这次服务器没有启动,说明地址不可用。

请在这方面提出建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-28 13:48:27

为了发现连接的服务器,您可以将UDP数据报发送到ff02::1。这是一个多播地址,将到达链接上的每个连接的IPv6设备(链接-本地范围)。当然,这意味着服务器需要侦听这些数据报。

简单服务发现协议(SSDP)使用这种方法。

对于您的服务器问题,如果有更多的代码,那就太好了。

假设你做了类似的事情:

代码语言:javascript
复制
QHostAddress address;
address.setAddress("2001:0DB8:0000:0002:0022:2217:FF3B:118C");
QTcpServer server;
server.listen(address)

这意味着您在2001:0DB8:0000:0002:0022:2217:FF3B:118C上收听,因此这个地址应该分配给您的一个接口(网卡)。

票数 0
EN

Stack Overflow用户

发布于 2017-08-03 08:52:12

最后,在参考了几个主题和站点之后,我得到了答案:简单地说,我的问题是:我需要从客户端动态地找到服务器主机地址。所以我在广播UDP数据报上找到了消息,通过网络将接收到网络中的所有节点,侦听节点将响应到客户端的主机地址和端口。

因此,首先我尝试发送成功的广播消息(仅在IPv4中,这在IPv6中是不可用的)。

在IPv6广播中,要使用来自客户端的组播,必须绑定多播地址"ff02::1%eth0“,然后从服务器端绑定多播组"ff02::1%eth0”。

这将成功地帮助发现同一网络中的网络。

如果有任何错误,请纠正我,并让我知道你的建议,使我的代码更好。

-克里希纳

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

https://stackoverflow.com/questions/45371868

复制
相关文章

相似问题

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