gpt4 book ai didi

java - SecurityException 从 OS X 上的 Java 发送广播

转载 作者:行者123 更新时间:2023-12-03 11:52:32 24 4
gpt4 key购买 nike

我正在尝试在我的 mac 上从 java 发送广播。这似乎应该有效,但我收到了 SecurityException。我已经确认没有安装 SecurityManager,并尝试使用 sudo 运行我的类(class)。

编码:

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):
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)

最佳答案

做了一点谷歌搜索后,您需要使用以下代码告诉套接字 DatagramChannel 正在使用它是一个广播 channel :

channel.socket().setBroadcast(true);

我认为这只是您需要在“ channel ”上设置广播套接字选项,这是底层的 O/S 套接字。显然,一旦 java7 出来,这将可以从 channel 级别执行,但目前您需要访问 DatagramSocket 来设置参数。

关于java - SecurityException 从 OS X 上的 Java 发送广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com