请问在JAVA中做broadcast用什么函数?

解决方案 »

  1.   

    大致上和这两个类有关。
    java.net.DatagramSocket
    java.net.DatagramPacketThinkInJava中有介绍
      

  2.   

    tij的例子//ChatterServer.javaimport java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.SocketException;
    import java.io.IOException;public class ChatterServer {
        static final int INPORT = 1711;
        private byte[] buf = new byte[1000];
        private DatagramPacket dp = 
            new DatagramPacket(buf, buf.length);
        private DatagramSocket socket;    public ChatterServer() {
            try {
                socket = new DatagramSocket(INPORT);
                System.out.println("Server started.");            while (true) {
                    socket.receive(dp);                String rcvd = Dgram.toString(dp)
                        + ", from address: " + dp.getAddress()
                        + ", port: " + dp.getPort();                System.out.println(rcvd);
                    String echoString = "Echoed: " + rcvd;                DatagramPacket echo =
                        Dgram.toDatagram(echoString, dp.getAddress(), dp.getPort());                socket.send(echo);
                }
            } catch (SocketException e) {
                System.err.println("Can't open socket");
                System.exit(1);
            } catch (IOException e) {
                System.err.println("Communication error.");
                e.printStackTrace();
            }
        }    public static void main(String[] args) {
            new ChatterServer();
        }
    }
    // ChatterClient.javaimport java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;import java.net.UnknownHostException;
    import java.io.IOException;public class ChatterClient 
        extends Thread {    private DatagramSocket socket;
        private InetAddress hostAddr;
        private byte[] buf = new byte[1000];
        private DatagramPacket dp = 
            new DatagramPacket(buf, buf.length);
        private int id;    public ChatterClient(int identifier) {
            id = identifier;
            try {
                socket = new DatagramSocket();
                hostAddr = InetAddress.getByName("localhost");
            } catch (UnknownHostException e) {
                System.err.println("Can't find host");
                System.exit(1);
            } catch (SocketException e) {
                System.err.println("Can't open socket.");
                e.printStackTrace();
                System.exit(1);
            }
            System.out.println("ChatterClient starting.");
        }    public void run() {
            try {
                for (int i=0; i<25; i++) {
                    String outMessage = "Client #"
                        + id + ", message #" + i;                System.out.println("Message will be sent is: \"" 
                        + outMessage + "\".");                socket.send(Dgram.toDatagram(outMessage, 
                        hostAddr, 
                        ChatterServer.INPORT));                socket.receive(dp);                String rcvd = "Client #" + id +
                        ", rcvd from " +
                        dp.getAddress() + ", " +
                        dp.getPort() + ": " +
                        Dgram.toString(dp);
                    System.out.println(rcvd);
                }
            } catch (IOException e) {
                e.printStackTrace();
                System.exit(1);
            }
        }    public static void main(String[] args) {
            for (int i=0; i<10; i++) {
                new ChatterClient(i).start();
            }
        }
    }