私のMacでjavaからブロードキャストを送信しようとしています。これはうまくいくはずですが、SecurityExceptionが発生しています。私は、SecurityManagerがインストールされていないことを確認し、sudoを使用してクラスを実行しようとしました。SecurityException OS XでJavaからブロードキャストを送信しています
コード:
public static void main(String[] args) throws Exception{
SocketAddress sockAddr = new InetSocketAddress("192.168.0.255",
4000);
ByteBuffer bb = ByteBuffer.allocate(10);
bb.put(new Byte("1"));
DatagramChannel channel = DatagramChannel.open();
channel.send(bb, sockAddr);
}
例外:
Exception in thread "main" java.net.SocketException: Permission denied
at sun.nio.ch.DatagramChannelImpl.send0(Native Method)
at sun.nio.ch.DatagramChannelImpl.sendFromNativeBuffer(DatagramChannelImpl.java:301)
at sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:281)
at sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:250)
at Test.main(Test.java:15)
SocketException
DatagramChannelではなくDatagramSocketを使用していることに驚いています。このチャネルはソケットの基本実装ですが、ブロードキャストを実行するためにすべての設定を行うわけではありません。 – Petesh