我想创建一个网络应用程序,其中某些设备必须将数据包发送到同一台设备。该设备是安卓设备。我的想法是将消息广播到网络,以便设备得到它。我在 Internet 上进行了检查,发现一种解决方案可能是 MulticastSocket。我已经按照 javadoc 中的教程进行操作,这很容易。我是在我的安卓手机和一台电脑上完成的。我现在遇到的问题是我希望这个套接字绑定在端口 80 上。实际上,当我尝试创建套接字时,我得到了一个错误,更准确地说是 EACCES。这是我的服务器的代码:
public class MyServer extends Thread {
private int port;
private boolean isRunning = true;
private MulticastSocket socket;
private InetAddress group;
public MyServer(int port) {
this.port = port;
isRunning = true;
}
public void run() {
socket = null;
try {
socket = new MulticastSocket(80);
group = InetAddress.getByName("coucou");
socket.joinGroup(group);
} catch (IOException e) {
e.printStackTrace();
return;
}
while (isRunning) {
DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);
try {
socket.receive(packet);
Log.i("Server", "Packet received");
MyCipher rec = new MyCipher(Arrays.copyOfRange(packet.getData(), 0, packet.getLength()));
Receiver.getInstance().put(rec);
} catch (IOException e) {
e.printStackTrace();
}
}
socket.close();
}
public void mustStop() {
this.notify();
isRunning = false;
}
}
有人知道如何解决吗?此外,是否有人知道组的名称是否必须是服务器的 ip 或者它可能是“随机”字符串?
谢谢 !