发送组播UDP并等待响应

3

在我的网络中,我有多个设备(Linux、C++)和一个 Android 手机。
现在,为了识别网络中的设备,我从 Android 手机发送一个组播 UDP 包,代码如下:

public class SSDPSocket {
    SocketAddress mSSDPMulticastGroup;
    MulticastSocket mSSDPSocket;
    InetAddress broadcastAddress;

    public SSDPSocket() throws IOException {
        mSSDPSocket = new MulticastSocket(55325);
        broadcastAddress = InetAddress.getByName(SSDPConstants.ADDRESS);
        mSSDPSocket.joinGroup(broadcastAddress);
    }

    public void send(String data) throws IOException {
        DatagramPacket dp = new DatagramPacket(data.getBytes(), data.length(), broadcastAddress, SSDPConstants.PORT);
        mSSDPSocket.setTimeToLive(2);
        mSSDPSocket.send(dp);
    }

    public void receive() {
        // TODO: Implement!
    }
}

我正在发送UDP数据包的地址是239.255.255.250,端口是1900。这很好用,我能在客户端接收到数据包。
现在我遇到了实现接收方法的问题。在这个方法中,我想从网络中的所有特殊设备接收响应。首先,客户端必须对发送者地址(我的智能手机的IP)做出响应,对吗?然后我会在receive()方法中有某种循环,可以接收传入的UDP响应,对吗?

我需要为此打开一个新的DatagramSocket吗?还是可以使用已经打开的MulticastSocket来进行响应?在我找到的例子中,每个人都使用已打开的MulticastSocket进行响应,但是由于MulticastSocket绑定到239.255.255.250,所以这应该如何工作呢?

1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接