问题描述:
    偶要实现加入某个组播的功能,并能够监听这个组播内发的消息!想请各位大虾帮忙,看怎样实现!不胜感激!

解决方案 »

  1.   

    答:这是我以前写的一个基于JAVA的组播的一个BBS小程序.仅供你参考.组IP是:228.9.9.9,若在同一台机器上运行,可以同时运行该程序几次,这样这几个实例自动加入该组,一个向组中发消息,其它的组的成员同时都收到.
    仅供你参考.
    参考代码:
    package network;
    import java.io.*;
    import java.net.*;
    public class MulticastBBS {
      private MulticastSocket ms=null;
      private InetAddress group=null;

    public MulticastBBS() throws Exception
    {
    group=InetAddress.getByName("228.9.9.9");
    ms=new MulticastSocket(7777);
    ms.joinGroup(group);
    }
      
    class SendThread extends Thread
    {
    public void myRun() throws Exception
    {
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    String line=null;
    do{
    line=br.readLine();
    DatagramPacket sdp=new DatagramPacket(
    line.getBytes(),
    line.getBytes().length,
    group,
    7777);
    ms.send(sdp);
    }while(!"quit".equalsIgnoreCase(line));
    }
    public void run()
    {
    try {
    myRun();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    class ReceiveThread extends Thread
    {
    public void myRun() throws Exception
    {
    boolean again=true;
    byte[] data=new byte[1024];
    DatagramPacket rdp=new DatagramPacket(data,data.length);
    while(again)
    {
    ms.receive(rdp);
    System.out.println("组中的包:"+new String(rdp.getData(),rdp.getOffset(),rdp.getLength()));
    }
    }
    public void run() 
    {
    try {
    myRun();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    }

    public static void main(String[] args) throws Exception {
    MulticastBBS bbs=new MulticastBBS();
    bbs.new ReceiveThread().start();
    bbs.new SendThread().start(); }}