2014-10-14 1 views
1

У меня есть сервер отправки однонаправленные UDP пакеты 192.168.1.101, порт 55555.Прием Unicast на Multicast гнездо

Мой Android устройство имеет IP 192.168.1.101. У моего Android-устройства есть многоадресный сокет, подключенный к порту 55555, подключенному к многоадресной группе 230.1.1.111.

Я получаю датаграммы на групповой розетке моего Android от сервера.

Имеет ли это смысл? Может ли многоадресный сокет получать дейтаграммы, которые не адресованы в группу многоадресной рассылки, к которой она присоединена?

ответ

2

Может ли многоадресный сокет получать дейтаграммы, которые не адресованы группе многоадресной рассылки, к которой она присоединена?

Да, может. Он может объединяться в нулевые или более многоадресные группы. Это не влияет на его одноадресные возможности.

+0

Спасибо. Мне было глупо спрашивать об этом, когда я увидел это своими глазами, но я просто удивлен. Санитарная проверка. –

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


     } 
    }