我有一个服务器向192.168.1.101端口55555发送单播UDP数据包。
我的Android设备有IP 192.168.1.101。我的Android设备在端口55555上有一个多播套接字绑定,连接到多播组230.1.1.111上。
我正在从服务器接收我的Android多播套接字上的数据报。
这有道理吗?多播套接字能否接收未寻址到其加入的多播组的数据报?
发布于 2014-10-14 23:23:12
多播套接字能否接收未寻址到其加入的多播组的数据报?
是的可以。它可以加入零或多个多播组。这不影响它的单播能力。
发布于 2016-04-29 19:36:17
添加以下代码以供参考。我们能够在同一个端口接收多播和单播消息。
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();
}
}https://stackoverflow.com/questions/26371920
复制相似问题