一个很简单的局域网聊天工具的服务器端 /* * 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(); } }

|