Я пытаюсь привязать сокет сервера IPv6 в Java 1.6 в Windows 7, используя этот фрагмент:
ssock = ServerSocketChannel.open();
ServerSocket sock = ssock.socket();
sock.bind(new InetSocketAddress(InetAddress.getByAddress(new byte[16]), 0));
К сожалению, это происходит с ошибкой IOException: семейство адресов не поддерживается семейством протоколов: bind
Я понимаю, что Java написана с предположением, что Windows использует отдельные стеки v4 и v6 (даже если Windows 7 этого не делает), и поэтому привязка одного сокета для v4 и v6 не может работать. Однако это не то, что я пытаюсь сделать: я просто хочу привязать сокет v6 к любому адресу (т.е. ::).
Редактировать : он также не работает в Vista.
Что я делаю не так?