我有一台服务器向192.168.1.101,端口55555发送单播UDP数据包。
我的Android设备有IP 192.168.1.101。我的Android设备有一个绑定在端口55555上的组播套接字,加入了组播组230.1.1.111。
我正在从服务器上的Android的多播套接字上接收数据报。
这有意义吗?组播套接字是否可以接收未发送到它加入的组播组的数据报?
答案 0 :(得分:2)
组播套接字是否可以接收未发送到它加入的组播组的数据报?
是的,它可以。它可以加入零个或多个组播组。这不会影响其单播能力。
答案 1 :(得分:0)
添加以下代码以供参考.. 我们可以在同一个端口接收多播和单播消息。
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class MulticastReceiver {
public static void main(String[] args) throws Exception {
int mcPort = 1800;
String mcIPStr = "239.255.255.250";
MulticastSocket mcSocket = null;
InetAddress mcIPAddress = null;
mcIPAddress = InetAddress.getByName(mcIPStr);
mcSocket = new MulticastSocket(mcPort);
System.out.println("Multicast Receiver running at:"
+ mcSocket.getLocalSocketAddress());
mcSocket.joinGroup(mcIPAddress);
boolean var=true;
while(var){
DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);
System.out.println("Waiting for a multicast message...");
mcSocket.receive(packet);
System.out.println("packet length is " +packet.getLength());
String msg = new String(packet.getData(),0,1024);
System.out.println("[Multicast Receiver] Received:" + msg);
}
mcSocket.leaveGroup(mcIPAddress);
mcSocket.close();
}
}