一个很简单的局域网聊天工具的服务器端 /*   * Created on 2005-3-18  *  * TODO To change the template for this generated file go to  * Window - Preferences - Java - Code Style - Code Templates  */ package netChat;
 import javax.swing.*; import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*;  /**  * @author AppleTian  *  * TODO To change the template for this generated type comment go to  * Window - Preferences - Java - Code Style - Code Templates  */ public class server extends JFrame {  private JTextField messageBox;  private JTextArea  infBox;  private ObjectInputStream input;  private ObjectOutputStream output;  private ServerSocket server;  private Socket       serverSocket;    public server(){   super("server");   Container c=getContentPane();      messageBox=new JTextField("");   messageBox.setEnabled(false);      messageBox.addActionListener(new ActionListener(){    public void actionPerformed(ActionEvent e){     sendData(e.getActionCommand());    }      });   c.add(messageBox,BorderLayout.NORTH);      infBox=new JTextArea();   infBox.setFont(new Font("Serif",Font.BOLD,12));   c.add(new JScrollPane(infBox),BorderLayout.CENTER);      setSize(500,400);   setVisible(true);     }  
  /**   * @param actionCommand   */  protected void sendData(String actionCommand) {   try{    output.writeObject(actionCommand);    output.flush();    infBox.append("\nsend<<"+actionCommand+">> to client...\n");   }   catch(IOException e){    infBox.append("\nExceptionIOInSendDataFunction...");   }  }     public void runServer(){      try{       server=new ServerSocket(5000,100);       while(true){        waitForConnection();        getStreams();        processConnection();        closeConnection();       }      }       catch(EOFException e){        infBox.append("\nError in runServerFuction");       }       catch(IOException e){        e.printStackTrace();       }           }  /**   *    */  private void closeConnection() throws IOException {   infBox.append("\nclose connection...");   messageBox.setEnabled(false);   output.close();   input.close();   serverSocket.close();     }   /**   *    */  private void processConnection() throws IOException {   String mg="\nconnection succeful";   messageBox.setEnabled(true);   output.writeObject(mg);   output.flush();      do{    try{     mg=( String )input.readObject();     infBox.append("\nsend to client: "+mg);     infBox.setCaretPosition(infBox.getText().length());    }    catch(ClassNotFoundException e){     infBox.append("\n Unkown class received...");         }   }while(mg!="end");              }
   /**   *    */  private void getStreams() throws IOException {   output=new ObjectOutputStream(serverSocket.getOutputStream());   output.flush();      input=new ObjectInputStream(serverSocket.getInputStream());      infBox.append("\nGet Streams...");        }
   /**   *    */  private void waitForConnection() throws IOException {   infBox.append("wait for a Client...");   serverSocket=server.accept();   infBox.append("connected by"+serverSocket.getInetAddress().getHostName());        }
   public static void main(String[] args) {   server my=new server();   my.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   my.runServer();  } }
 
 客户端 /*  * Created on 2005-3-18  *  * TODO To change the template for this generated file go to  * Window - Preferences - Java - Code Style - Code Templates  */ package netChat; import javax.swing.*; import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; /**  * @author AppleTian  *  * TODO To change the template for this generated type comment go to  * Window - Preferences - Java - Code Style - Code Templates  */ public class client extends JFrame {    private JTextField messageBox;  private JTextArea  infBox;  private ObjectInputStream input;  private ObjectOutputStream output;  private String mg="";  private String chatServer;  private Socket   client;  public client(String host){   super("client....");   chatServer=host;   Container c=getContentPane();      messageBox=new JTextField();   messageBox.setEnabled(false);   messageBox.addActionListener(new ActionListener(){    public void actionPerformed(ActionEvent e){     sendData(e.getActionCommand());    }       });   c.add(messageBox,BorderLayout.NORTH);   infBox=new JTextArea();   c.add(infBox,BorderLayout.CENTER);      setSize(500,400);   setVisible(true);                 }    /**   * @param actionCommand   */  protected void sendData(String actionCommand) {   try{    mg=messageBox.getText();    output.writeObject(mg);    output.flush();    infBox.append("\nsend to server: "+mg);   }catch(IOException e){    infBox.append("\nIOException in sendData..");   }     }    public void runClient(){     try{         connectToServer();       getStreams();       processConnection();       closeConnection();       }catch(IOException e){        infBox.append(e.toString());       }           }  /**  *   */ private void closeConnection()throws IOException  {  // TODO Auto-generated method stub  infBox.append("\nclose...");  output.close();  input.close();  client.close(); }   /**  *   */ private void processConnection() throws IOException{  // TODO Auto-generated method stub  messageBox.setEnabled(true );  do{   try{    mg=(String )input.readObject();    infBox.append("\nFrom server: "+mg);    infBox.setCaretPosition(infBox.getText().length());   }catch(ClassNotFoundException e){    infBox.append("classNotFound...\n");   }  }while(mg!="end"); }
   /**  *   */ private void getStreams() throws IOException {  // TODO Auto-generated method stub  output=new ObjectOutputStream(client.getOutputStream());  output.flush();  input=new ObjectInputStream(client.getInputStream());  infBox.append("get the IO Stream..\n");   }
   /**  *   */ private void connectToServer() throws IOException {  // TODO Auto-generated method stub  infBox.append("try connecting to server...\n");  client=new Socket(InetAddress.getByName(chatServer),5000);  infBox.append("connect to server:"+client.getInetAddress().getHostName()+"\n");   }
   public static void main(String[] args) {   client p;   if(args.length==0)    p=new client("127.0.0.1");   else    p=new client(args[0]);   p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   p.runClient();     } }
 
  
 
  |