我再一次需要一些关于如何在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。
来自Swift
答案 0 :(得分:1)
如果你没问题 - 尝试使用
答案 1 :(得分:0)
channel
的类型是什么?从未使用'netty',但在sun的nio世界中,假设sa
是SocketAddress
的实例,只需使用sa.getAddress()
。如果sa
表示IPv4地址上的套接字,则当它是IPv6地址上的套接字时,您将获得Inet4Address
或Inet6Address
的实例。
添加一些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);
...