关于Java组播在Linux中的一个题目

    添加时间:2013-5-25 点击量:

     

         今天在再做一个UDP接管组播的法度,因为办事器有多块网卡,须要绑定到一个指定的网卡上方去,凡是做法是将MulticastSocket绑定到指定的网卡上方去,就可以收到组播,然则今天当我把它放到Linux(centos 6.2)上去履行的时辰,却发明接管不到数据,在网上查找,说Linux可以绑定到组播地址,于是实验确切是可以接管到数据,然则这个到底是什么原因呢?

    下面是一篇相干的文档:

    http://www.dest-unreach.org/socat/doc/socat-multicast.html

    public class Main {
    

    /
    @param args
    @throws Throwable
    /
    public static void main(String[] args) throws Throwable {

    InetSocketAddress isock
    = new InetSocketAddress("239.2.2.2", 6666);

    MulticastSocket socket
    = new MulticastSocket(isock);
    socket.setSoTimeout(
    5000);

    socket.setNetworkInterface(NetworkInterface
    .getByInetAddress(InetAddress.getByName(
    "172.16.7.65")));
    socket.setInterface(InetAddress.getByName(
    "172.16.7.65"));

    socket.joinGroup(InetAddress.getByName(
    "239.2.2.2"));

    byte[] buf = new byte[1500];
    DatagramPacket p
    = new DatagramPacket(buf, 1500);
    System.out.println(
    "start rev:......");
    whiletrue) {
    socket.receive(p);
    System.out.println(p.getLength());
    }
    }

    }

    我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
    分享到: