Я написал этот код для реализации Wake On Lan:java.io.IOException: Разрешение отказано в Уэйк на Lan
InetAddress address = InetAddress.getByAddress(
new byte[]{(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff});
DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, 7);
socket.send(packet);
Но я получаю это:
java.io.IOException: Permission denied
at gnu.java.nio.VMChannel.send(Native Method)
at gnu.java.nio.VMChannel.send(VMChannel.java:308)
at gnu.java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:261)
at java.net.DatagramSocket.send(DatagramSocket.java:659)
at com.MyApp.wakeonlan(MyApp.java:685)
Проблема кажется широковещательный адрес, потому что, если я перехожу на любой другой адрес, он не дает этой ошибки. Как я могу его избежать? Я использую linux busybox, с JamVM и GNU Classpath.
Я предполагаю, что это работает, если вы запустите его как root? – NPE
Я root, но он по-прежнему не работает. – michelemarcon
Нет безопасности/разрешений/политик Java на месте? Если это действительно вызвано конкретным адресом, то это может быть 'java.net.SocketPermission', блокирующий его. –