packageQQ;import javax.swing.*;import java.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowEvent;importjava.awt.event.WindowListener;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.PrintWriter;importjava.net.Socket;/*** Created by hu on 2015/11/8.*/
//QQ类似聊天程序的客户端
public class Client extendsJFrame {staticJTextArea area;
JTextField field;
JButton button;staticPrintWriter writer;publicClient() {this.setTitle("客户端");this.setSize(400,500);
area=new JTextArea(25,30);
area.setEditable(false);
field=new JTextField(20);
button=new JButton("提交");
JScrollPane sp=newJScrollPane(area);
JPanel panel=newJPanel();this.add(sp, BorderLayout.CENTER);
panel.add(field);
panel.add(button);this.add(panel,BorderLayout.SOUTH);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.addActionListener(newActionListener() {
@Overridepublic voidactionPerformed(ActionEvent e) {
String text=field.getText();
writer.println(text);
area.append("me:"+text+"\n");
field.setText("");
}
});
}public static void main(String[] args)throwsException{
Socket socket=new Socket("127.0.0.1",8899);
Client client=newClient();
OutputStream out=socket.getOutputStream();
BufferedReader reader=new BufferedReader(newInputStreamReader(socket.getInputStream()));
writer=new PrintWriter(out,true);
client.addWindowListener(newWindowListener() {
@Overridepublic voidwindowOpened(WindowEvent e) {
}
@Overridepublic voidwindowClosing(WindowEvent e) {
System.out.println("closing");try{
socket.shutdownInput();
socket.shutdownOutput();
socket.close();
writer.close();
reader.close();
}catch(Exception exception){
exception.printStackTrace();
}
}
@Overridepublic voidwindowClosed(WindowEvent e) {
System.out.println("closed");
}
@Overridepublic voidwindowIconified(WindowEvent e) {
}
@Overridepublic voidwindowDeiconified(WindowEvent e) {
}
@Overridepublic voidwindowActivated(WindowEvent e) {
}
@Overridepublic voidwindowDeactivated(WindowEvent e) {
}
});while (true){try{
String line=reader.readLine();
area.append("服务器:"+line+"\n");
}catch(Exception exception){
System.out.println("客户端程序已经关闭!");break;
}
}
}
}