菜鸟编程之java查缺补漏――Simple_Chat(二)

2014-11-24 07:40:14 · 作者: · 浏览: 1
ock
e.printStackTrace();
}
finally{
try {
if(in!=null) in.close();
if(output!=null) output.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}
}Chat_Client.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 block
e.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("");