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

来源:转载

 

     今天在再做一个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()); } }}

分享给朋友:
您可能感兴趣的文章:
随机阅读: