Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

DatagramPacketでのブロードキャスト受信について

Java初心者です。

現在、JavaにてUDP送受信テストを行っているのですが、
ユニキャストの場合は送受信ともに成功するのですが、
ブロードキャストした場合の受信のみ行えません
どなたかご教授願えないでしょうか?

Windowsファイアウォールには、UDP/10001を例外許可しており
ログにはDROP記録は残っていませんでした

●環境

 JDK1.7.0_02
 WindowsXP
 ローカルマシン内での送受信テスト

●ソース

-------------------------------------------
import java.net.*;
import java.util.*;
public class PacketReceiver {
  public static void main(String[] args) throws  Exception {
    InetSocketAddress isAddress 
      = new InetSocketAddress("0.0.0.0",10001);
    byte[] buffer = new byte[1024];
    DatagramPacket packet 
      = new DatagramPacket( buffer, buffer.length );
    DatagramSocket dgSocket = new DatagramSocket(isAddress);
    dgSocket.setBroadcast(true);
    dgSocket.setReuseAddress(true);
    while (true) {
      dgSocket.receive(packet);
      System.out.print (new String(packet.getData(),0,
                         packet.getLength()));
                         System.out.println( ": " + new Date() );
    }
  }
}
-------------------------------------------

import java.net.*;
public class PacketSender {
  public static void main( String[] args ) throws Exception {
    InetSocketAddress isAddress 
        = new InetSocketAddress("192.168.100.255",10001);
    byte[] buffer = "HELLOW".getBytes();
    DatagramPacket packet 
        = new DatagramPacket( buffer, buffer.length, isAddress );
    new DatagramSocket().send(packet);
  }
}
-------------------------------------------

1

回答

83190

閲覧

1件の回答

評価

0

SecurityManagerのcheckConnectにアドレスとポートを設定することで
解決出来ました

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。