我是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");地址;这次服务器没有启动,说明地址不可用。
请在这方面提出建议。
发布于 2017-07-28 13:48:27
为了发现连接的服务器,您可以将UDP数据报发送到ff02::1。这是一个多播地址,将到达链接上的每个连接的IPv6设备(链接-本地范围)。当然,这意味着服务器需要侦听这些数据报。
简单服务发现协议(SSDP)使用这种方法。
对于您的服务器问题,如果有更多的代码,那就太好了。
假设你做了类似的事情:
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上收听,因此这个地址应该分配给您的一个接口(网卡)。
发布于 2017-08-03 08:52:12
最后,在参考了几个主题和站点之后,我得到了答案:简单地说,我的问题是:我需要从客户端动态地找到服务器主机地址。所以我在广播UDP数据报上找到了消息,通过网络将接收到网络中的所有节点,侦听节点将响应到客户端的主机地址和端口。
因此,首先我尝试发送成功的广播消息(仅在IPv4中,这在IPv6中是不可用的)。
在IPv6广播中,要使用来自客户端的组播,必须绑定多播地址"ff02::1%eth0“,然后从服务器端绑定多播组"ff02::1%eth0”。
这将成功地帮助发现同一网络中的网络。
如果有任何错误,请纠正我,并让我知道你的建议,使我的代码更好。
-克里希纳
https://stackoverflow.com/questions/45371868
复制相似问题