我有一台服务器发送单播UDP数据包到192.168.1.101,端口55555 .
我的Android设备有IP 192.168.1.101 . 我的Android设备有一个绑定在端口55555上的多播套接字,加入了组播组230.1.1.111 .
我从服务器上接收Android的多播套接字上的数据报 .
这有意义吗?组播套接字是否可以接收未寻址到其加入的组播组的数据报?
组播套接字是否可以接收未发送到其加入的组播组的数据报?
是的,它可以 . 它可以加入零个或多个组播组 . 这不会影响其单播功能 .
添加以下代码以供参考..我们能够在同一端口接收多播和单播消息 .
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(); } }
2 回答
是的,它可以 . 它可以加入零个或多个组播组 . 这不会影响其单播功能 .
添加以下代码以供参考..我们能够在同一端口接收多播和单播消息 .