首页 文章

在多播套接字上接收单播

提问于
浏览
1

我有一台服务器发送单播UDP数据包到192.168.1.101,端口55555 .

我的Android设备有IP 192.168.1.101 . 我的Android设备有一个绑定在端口55555上的多播套接字,加入了组播组230.1.1.111 .

我从服务器上接收Android的多播套接字上的数据报 .

这有意义吗?组播套接字是否可以接收未寻址到其加入的组播组的数据报?

2 回答

  • 0

    组播套接字是否可以接收未发送到其加入的组播组的数据报?

    是的,它可以 . 它可以加入零个或多个组播组 . 这不会影响其单播功能 .

  • 2

    添加以下代码以供参考..我们能够在同一端口接收多播和单播消息 .

    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();
    
    
            }
        }
    

相关问题