Я пытаюсь связать сокет сервера 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.
Что я делаю неправильно?