UDP廣播地址的疑問?


接收端:
public static void main(String[] args) {
try
    {
      MulticastSocket multicastSocket = new MulticastSocket(50000);
      InetAddress inetAddress = InetAddress.getByName("255.255.255.255");
      multicastSocket.joinGroup(inetAddress); 

     System.out.println("wait......");
      while (true)
      {
        byte [] arb = new byte [100];
        DatagramPacket datagramPacket = new DatagramPacket(arb, arb.length);
        multicastSocket.receive(datagramPacket);
        System.out.println(new String(arb));
      }
    }
    catch (Exception exception)
    {
      exception.printStackTrace();
    }
}

發送端:
public static void main(String[] args) {
try
    {
              byte [] arb = new byte [] {'h','e','l','l','o'};
      InetAddress ipgroup = InetAddress.getByName("255.255.255.255");
      DatagramPacket datagramPacket = 
          new DatagramPacket(arb, arb.length, ipgroup, 50000);
      MulticastSocket multicastSocket = new MulticastSocket(5555);
      multicastSocket.send(datagramPacket);
    }
    catch (Exception exception)
    {
      exception.printStackTrace();
    }
    System.out.println("發送成功");
}


局域網信息
路由器地址:192.168.0.1
本機IP 地址: 192.168.0.101
子網掩碼: 255.255.255.0
默認網關: 192.168.0.1


用了幾個廣播地址:255.255.255.255;  192.168.0.255;  127.0.0.255

都接收不到信息.

請教一下怎末回事?那里錯誤了?

5 个解决方案

#1


用255.255.255.255為廣播地址時

接收端:

multicastSocket.joinGroup(inetAddress); 

報錯:

java.net.SocketException: Not a multicast address
at java.net.MulticastSocket.joinGroup(MulticastSocket.java:273)

#2


沒有朋友做過這方面的東東么?幫幫我

#3


查了好的資料..現在用

InetAddress inetAddress = InetAddress.getByName("224.0.1.28");
      multicastSocket.joinGroup(inetAddress); 

這個組播地址搞定了..原理還是不明白...

#4


什么原理呀,偶也搞不清楚

#5


轉:

組播的地址是保留的D類地址從224.0.0.0—239.255.255.255,而且一些地址有特定的用處如,224.0.0.0—244.0.0.255只能用於局域網中路由器是不會轉發的,並且224.0.0.1是所有主機的地址,224.0.0.2所有路由器的地址,224.0.0.5所有ospf路由器的地址,224.0.13事PIMv2路由器的地址;239.0.0.0—239.255.255.255是私有地址(如192.168.x..x);224.0.1.0—238.255.255.255可以用與Internet上的。 

2層的MAC地址是如何與3層的IP地址進行映射的呢?通過將MAC地址的前25位強行規定位0100.5e,而后23位對應IP地址的后23位,而組播IP地址的前4位均相同如: 

IP地址: 1110yyyy.yxxxxxxx.xxxxxxx.xxxxxxxx 

MAC地址: 00000001.00000000.01011110.0xxxxxxx.xxxxxxx.xxxxxxxx 

顯然有32個IP地址(有5個y可以不一樣)對應一個MAC地址,所以要避免在同一網絡中使用的多個組播IP地址對應一個MAC地址。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com