java多播实验代码

来源:互联网 发布:网络赚钱团队日赚800 编辑:程序博客网 时间:2024/05/18 08:01

Speaker

/**
* @(#)broadcastSpeaker.java
*
*
* @author
* @version 1.00 2010/5/13
*/
import java.net.*;
import java.io.*;

public class broadcastSpeaker {
static String iaddr;
static int port;
int messageout;
    public broadcastSpeaker() {
    try{
       System.out.println("Connecting...");
       Socket socket=new Socket(InetAddress.getByName(iaddr),port);
       System.out.println("Connect successfull !");
       DataOutputStream ost=new DataOutputStream(socket.getOutputStream());
       InputStreamReader ist=new InputStreamReader(System.in);
       BufferedReader br =new BufferedReader(ist);
       System.out.println("please inpout information:");
       while(true){
        messageout=br.read();
        ost.writeInt(messageout);
       }
    }
    catch(IOException e){
       e.printStackTrace();
    }
    }
    public static void main(String args[]){
    if(args.length<2){
       System.out.println("Usage : java broadcastSpeaker [iaddr] [port]");
       System.exit(1);
    }
    port=Integer.parseInt(args[1]);
    iaddr=args[0];
    new broadcastSpeaker();
    }
}

Server

/**
* @(#)broadcastServer.java
*
*
* @author
* @version 1.00 2010/5/13
*/
import java.net.*;
import java.io.*;
import java.util.*;

public class broadcastServer {
private static ServerSocket SS;
private static int port;
Socket socket;
private Hashtable ht = new Hashtable();
    public broadcastServer() {
    try{
       SS=new ServerSocket(port);
       System.out.println("Server is created and waiting client to connect...");
       while(true){
        socket=SS.accept();
        System.out.println("Client IP="+socket.getInetAddress().getHostAddress());
        DataOutputStream ost = new DataOutputStream(socket.getOutputStream());
        ht.put(socket,ost);
        Thread thread=new Thread(new ServerRunnable(socket,ht));
        thread.start();
       }
      
    }
    catch(IOException e) {
       e.printStackTrace();
    }
    }
    public static void main(String args[]){
    if(args.length<1){
       System.out.println("Usage:java Server1 [port]");
       System.exit(1);
    }
    port=Integer.parseInt(args[0]);
    new broadcastServer();
    }
   
}
class ServerRunnable implements Runnable {
private Socket socket;
private Hashtable ht;
public ServerRunnable(Socket socket,Hashtable ht){
   this.socket=socket;
   this.ht=ht;
}
public void run(){
   DataInputStream ist;
   try{
    ist=new DataInputStream(socket.getInputStream());
    while(true){
     int messagein=ist.readInt();
     synchronized(ht){
      Enumeration en=ht.elements();
      while(en.hasMoreElements()){
       DataOutputStream ost=(DataOutputStream)en.nextElement();
       ost.writeInt(messagein);
      }
     }
    }
   }
   catch(IOException e){
    //e.printStackTrace();
   }
   finally {
    synchronized (ht){
     System.out.println("Rmove connection:"+socket);
     ht.remove(socket);
     try{
      socket.close();
     }
     catch(IOException e){
      e.printStackTrace();
     
     }
    }
   }
}
}

Receiver

/**
* @(#)broadcastReceiver.java
*
*
* @author
* @version 1.00 2010/5/13
*/
import java.net.*;
import java.io.*;

public class broadcastReceiver {
static int port;
static String iaddr;
int messagein;
Socket socket;
    public broadcastReceiver() {
    try{
       System.out.println("Connecting...");
       socket=new Socket(InetAddress.getByName(iaddr),port);
       System.out.println("Connect successfull !");
       DataInputStream ist=new DataInputStream(socket.getInputStream());
       while(true){
        messagein=ist.readInt();
        System.out.print((char)messagein);
       }
    }
    catch(IOException e){
       e.printStackTrace();
    }
    }
    public static void main(String args[]){
    if(args.length<2){
       System.out.println("Usage : java broadcastReceiver [iaddr] [port]");
       System.exit(1);
    }
    port=Integer.parseInt(args[1]);
    iaddr=args[0];
    new broadcastReceiver();
    }
   
   
}