伊藤と申します。 Vine 3.2 を使用しています。 立ち上げる kernel バージョンの違いによって、 Javaで作成されたMuticastソケットのインスタンスが複数作成できない 状況に直面しています。 エラーが発生: 2.4.31-0vl1.12 エラー無し: 2.4.27-0vl7.6 同じコードを用いた再現テストは、RedHat EL3,4や、 Fedora Core 4,5では発生しません。 起動する kernel バージョンをダウングレードすれば問題ありませんが、 kernelバージョンをかえずにこのエラーを発生させないためには、 kernel に何かしらの patch をあて kernel rebuild を行うより 仕方がないのでしょうか? ちなみに、下記に示すコードは、ソースの公開されていない商用ソフトで 発生するエラーの原因を開発者に相談したところ、 最終的に原因として突き止めたものです。 以下にJavaのコードと、エラーメッセージ、uname -a の結果を載せます。 【Javaコード】 import java.io.*; import java.net.*; public class MulticastTest { public static final int MCAST_PORT1 = 9999; public static final int MCAST_PORT2 = 9999; public static void main(String[] args){ MulticastSocket socket1 = null; MulticastSocket socket2 = null; try { socket1 = new MulticastSocket(MCAST_PORT1); socket2 = new MulticastSocket(MCAST_PORT2); } catch (IOException e) { e.printStackTrace(); System.exit(3); } } } ※ MCAST_PORT1,MCAST_PORT2を異なるポートに指定した場合は成功します。 【実行結果とエラー】 $ /usr/java/jdk1.5.0_08/bin/java MulticastTest java.net.BindException: Address already in use at java.net.PlainDatagramSocketImpl.bind0(Native Method) at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:82) at java.net.DatagramSocket.bind(DatagramSocket.java:368) at java.net.MulticastSocket.<init>(MulticastSocket.java:147) at java.net.MulticastSocket.<init>(MulticastSocket.java:112) at MulticastTest.main(MulticastTest.java:17) $ uname -a Linux localhost.localdomain 2.4.31-0vl1.12 #1 Mon Dec 26 22:22:09 JST 2005 i686 unknown 以上、よろしくお願いいたします。 -- Yasumitsu Ito