菜鸟编程之java查缺补漏——Simple_Chat(java聊天室)
Chat_Server.java
?
import java.awt.BorderLayout;import java.awt.Frame;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.Socket;import java.net.UnknownHostException;public class Chat_Client extends Frame{TextField textField=new TextField();TextArea textArea=new TextArea();String str=null;Socket client;ObjectOutputStream output=null;ObjectInputStream input=null;boolean isConnected=false;public static void main(String[] args) {new Chat_Client().launchFrame();}public Chat_Client(){connect();new Thread(new ClientOwnThread()).start();}public void launchFrame(){this.setLocation(400,300);this.setSize(300,300);this.add(textArea,BorderLayout.NORTH);this.add(textField,BorderLayout.SOUTH);this.pack();textArea.setEditable(false);this.setVisible(true);this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});textField.addActionListener(new TextFieldListener());}private void connect(){try {client=new Socket("127.0.0.1",8888);output=new ObjectOutputStream(client.getOutputStream());input=new ObjectInputStream(client.getInputStream());isConnected=true;} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}private void disConnect(){try {if(output!=null) output.close();if(input!=null) input.close();if(client!=null) client.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}class ClientOwnThread implements Runnable{public void run() {try {while(isConnected){String str=(String)input.readObject();textArea.append(str+"\n");}} catch (Exception e) {e.printStackTrace();}finally{disConnect();}}}private class TextFieldListener implements ActionListener{public void actionPerformed(ActionEvent arg0) {str=textField.getText().trim();textField.setText("");try {output.writeObject(str);output.flush();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}?