Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

IPv6 on Java

51 views
Skip to first unread message

Shinji KONO

unread,
Oct 27, 2008, 3:23:56 AM10/27/08
to
河野真治 @ 琉球大学情報工学です。

Java のServerなんですが、

なんか、IPv6 では接続できないし。なんでだろう? Any でbindす
るのだと、tcp4 にしかbindしないっぽい。変だなぁ。

ssc.socket().bind(new InetSocketAddress(receive_port));

で良いはず。なんですが、dual stack/single stackでも状況が異なる
らしい。netstat で見る限り、tcp4 になってしまう。


v6なワイルドカードアドレスを明示的に取る手法が良くわからない。 と思っていたら、

http://tinyurl.com/57jehf

には、"::" を使えみたいなことが書いてあるな。

  ssc.socket().bind(new InetSocketAddress("::",receive_port));

とするみたいですね。なるほど~

tcp46 0 0 *.8766 *.* LISTEN

と、めでたく接続。telnet ::1 8766 で問題なく接続。めでたしめでたし。

と思っていたら、

http://d.hatena.ne.jp/torutk/20080127/p1

■[Java]NIOパッケージのServerSocketChannelはWindows上ではIPv6をlistenしない
Windows OSでNIOパッケージを使ってTCPサーバを記述したときにIPv6が使えないという問題にあたりました。BugIDにも登録されてますが、解決のめどはないようです。
Bug ID: 6230761 (so) NIO channels with IPv6 on Windows

なので、Windows Vista では、この方法ではダメらしいです。ふ~ん。
なので、なんかの回避コードが必要っぽい。

java7 では、直るみたいな話もbugID の方には出ているみたいです。

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科

0 new messages