关于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:......");
while (true) {
socket.receive(p);
System.out.println(p.getLength());
}
}
}
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
 
     今天在再做一个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:......");
while (true) {
socket.receive(p);
System.out.println(p.getLength());
}
}
}