Mar*_*wis 5 java windows ipv6 windows-7
我尝试使用此片段在Windows 7上绑定Java 1.6中的IPv6服务器套接字:
ssock = ServerSocketChannel.open();
ServerSocket sock = ssock.socket();
sock.bind(new InetSocketAddress(InetAddress.getByAddress(new byte[16]), 0));
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会因IOException而失败:协议族不支持的地址族:bind
我知道Java的编写假设Windows使用单独的v4和v6堆栈(即使Windows 7没有),因此绑定v4和v6的单个套接字也无法工作.但是,这不是我想要做的:我只想将v6套接字绑定到任何地址(即::).
编辑:Vista上也失败了.
我究竟做错了什么?
我找到了解决方案; 它是bug 6230761.创建IPv6服务器套接字通道的唯一受支持的方法是首先创建serversocket:
ServerSocket s = new ServerSocket();
s.bind(new InetSocketAddress(InetAddress.getByName("::"), 0));
Run Code Online (Sandbox Code Playgroud)
编辑:这意味着NIO实际上不能与IPv6一起使用.
| 归档时间: |
|
| 查看次数: |
4952 次 |
| 最近记录: |