端口80上的MulticastSocket

时间:2015-09-29 08:32:58

标签: android ioexception multicastsocket

我想创建一个网络应用程序,其中一些设备必须将数据包发送到同一个另一个设备。此设备是Android设备。我的想法是将消息广播到网络,以便设备获得它。我已经在互联网上查了一下,我发现一个解决方案可能是MulticastSocket。我已经按照javadoc的教程进行了操作,这非常简单。我是在Android手机和一台电脑上完成的。我现在遇到的问题是我希望这个套接字绑定在端口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或者它是否是“随机”字符串?

谢谢!

0 个答案:

没有答案