使用Android NSD而不是IPv4地址升级IPv6地址
我在我的应用程序中成功注册了一项服务,我可以使用命令行工具使用Android NSD而不是IPv4地址升级IPv6地址,android,ipv6,service-discovery,nsd,Android,Ipv6,Service Discovery,Nsd,我在我的应用程序中成功注册了一项服务,我可以使用命令行工具avahi browse在我的通用Linux设备上看到该服务。我想知道的是:为什么avahi browse显示的是我的Android的IPv4地址,而不是IPv6(本地链接)地址?两个部分都打印在屏幕上 如何使服务发现提升IPv6地址。请参阅下面我的代码片段: try { val serviceInfo = NsdServiceInfo().apply { // host = InetAddress.getByNa
avahi browse
在我的通用Linux设备上看到该服务。我想知道的是:为什么avahi browse显示的是我的Android的IPv4地址,而不是IPv6(本地链接)地址?两个部分都打印在屏幕上
如何使服务发现提升IPv6地址。请参阅下面我的代码片段:
try {
val serviceInfo = NsdServiceInfo().apply {
// host = InetAddress.getByName("fe80::1234/64") // TODO: This fails
serviceName = TAG
serviceType = mServiceType
setPort(port)
}
...
您需要包含带有链接本地IPv6地址的区域ID。好的。。。你能详细说明一下吗?我添加了区域ID,这就成功了。。。以某种方式“avahi browse”仍然显示这两个部分的IPv4地址。“avahi discover”显示“public”IPv6地址,而不是我添加到函数调用中的本地链路地址。。。整个行为对我来说似乎很奇怪。IPv6链路本地地址都在同一网络范围内,因此当您引用链路本地地址时,必须包含区域ID以区分哪个链路本地网络。请记住,主机可以有多个接口,每个IPv6接口都将在同一链路本地网络范围内有一个地址,但不同的链路本地网络。再次感谢。。我改变了这一点,但Android网络服务发现仍然传播“公共”IPv6地址,而不是传递给“getByName()”方法的链接本地地址。尽管它是正确的WiFi接口。