0

我再次需要一些关于如何在 java 上使用 Inet6Address 的小帮助。

当我开发一个获取 IPv4 地址的应用程序时,现在我想将它扩展到 IPv6。而且似乎我无法获得 IPv6 地址,并且它一直在获得 IPv4 地址。

我尝试导入 java.net.Inet6Address;

使用我拥有的现有代码,如下所示。

public SocketAddress getInetAddress(){
   return channel.getRemote();
}

该频道正在使用 netty 项目。

如何使用 Inet6Address?

正如我在这个网站上发现的那样 http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Inet6Address.html

public InetSocketAddress getInetAddress(){
   Inet6Address ipv6 = (Inet6Address)channel.getRemoteAddress.**getAddress();**

    return channel.getRemote();
}

我也可以问一下 .getAddress() 是否不能使用,有人可以帮我解决这个问题吗?

就像我需要下载一个jar文件来解决这个问题吗?

我使用的java版本是java 6。

来自斯威夫特

4

2 回答 2

1

如果你没问题 - 尝试使用

Java-ipv6

于 2013-01-29T08:46:16.280 回答
0

你的类型是channel什么?从未使用过'netty',但在sun的nio世界中,假设sa是一个实例SocketAddress,只需使用sa.getAddress(). ifsa表示 IPv4 地址上的套接字,您将获得 的实例Inet4Address,或者Inet6Address当它是 IPv6 地址上的套接字时。

添加一些 IPv6 绑定代码:

InetAddress[] addresses = InetAddress.getAllByName("localhost");
Inet6Address add6 = null;
for(InetAddress add : addresses) { 
    if (add instanceof Inet6Address) {
        add6 = add;
        break;
    }
}
if (add6==null)
    throw new RuntimeException("no IPv6 local address found!");
InetSocketAddress sa=new InetSocketAddress(add6, port);
...
于 2013-01-29T09:05:33.040 回答