复习了一天Java。晚上写了一个HeartChat 0.1,实现多个客户端相互聊天的机制。代码如下:
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- import java.lang.*;
- import java.net.*;
- public class HeartClient extends Frame {
- /*
- * 成员方法出场...
- */
- private TextField tfText;
- private TextArea taContent;
- private Socket s;
- private DataOutputStream dos;
- private DataInputStream dis;
- /**
- * 注意,入口... ^^
- * @param args
- */
- public static void main(String[] args) {
- new HeartClient().launchFrame();
- }
- /**
- * Loading GU
- */
- public void launchFrame(){
- tfText = new TextField();
- taContent = new TextArea();
- this.setSize(300,300);
- this.setLocation(300,300);
- this.tfText.addActionListener(new TFListener());
- this.add(tfText,BorderLayout.SOUTH);
- this.add(taContent,BorderLayout.NORTH);
- this.addWindowListener(new WindowAdapter(){
- @Override
- public void windowClosing(WindowEvent e) {
- System.exit(0);
- }});
- this.pack();
- this.connect();
- this.setVisible(true);
- }
- /**
- * 我在努力地连接服务器中...
- */
- public void connect() {
- try {
- s = new Socket("127.0.0.1",1720);
- dos = new DataOutputStream(s.getOutputStream());
- dis = new DataInputStream(s.getInputStream());
- new Thread(new SendThread()).start();
- // dos.writeUTF("Hello,i find u!");
- } catch (UnknownHostException e) {
- System.out.println("UnknownHostException");
- e.printStackTrace();
- } catch (IOException e) {
- System.out.println("IOException");
- e.printStackTrace();
- }finally{
- //关闭啥尼...
- }
- }
- /**
- * 额不会傻等着tfText(TextField tfText的监听器类)
- */
- class TFListener implements ActionListener{
- private String str;
- @Override
- public void actionPerformed(ActionEvent e) {
- str = tfText.getText().trim();
- tfText.setText("");
- try {
- dos.writeUTF(str);
- } catch (IOException e1) {
- System.out.println("IOException");
- e1.printStackTrace();
- }
- }
- }
- /**
- * 客户端接收消息的线程呦...
- *
- */
- class SendThread implements Runnable{
- private String str;
- private boolean iConnect = false;
- public void run(){
- iConnect = true;
- recMsg();
- }
- /**
- * 消息,看招,哪里跑...(客户端接收消息的实现)
- * @throws IOException
- */
- public void recMsg() {
- try {
- while(iConnect){
- str = dis.readUTF();
- taContent.setText(str);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.*;
import java.net.*;
public class HeartClient extends Frame {
/*
* 成员方法出场...
*/
private TextField tfText;
private TextArea taContent;
private Socket s;
private DataOutputStream dos;
private DataInputStream dis;
/**
* 注意,入口... ^^
* @param args
*/
public static void main(String[] args) {
new HeartClient().launchFrame();
}
/**
* Loading GU
*/
public void launchFrame(){
tfText = new TextField();
taContent = new TextArea();
this.setSize(300,300);
this.setLocation(300,300);
this.tfText.addActionListener(new TFListener());
this.add(tfText,BorderLayout.SOUTH);
this.add(taContent,BorderLayout.NORTH);
this.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}});
this.pack();
this.connect();
this.setVisible(true);
}
/**
* 我在努力地连接服务器中...
*/
public void connect() {
try {
s = new Socket("127.0.0.1",1720);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
new Thread(new SendThread()).start();
// dos.writeUTF("Hello,i find u!");
} catch (UnknownHostException e) {
System.out.println("UnknownHostException");
e.printStackTrace();
} catch (IOException e) {
System.out.println("IOException");
e.printStackTrace();
}finally{
//关闭啥尼...
}
}
/**
* 额不会傻等着tfText(TextField tfText的监听器类)
*/
class TFListener implements ActionListener{
private String str;
@Override
public void actionPerformed(ActionEvent e) {
str = tfText.getText().trim();
tfText.setText("");
try {
dos.writeUTF(str);
} catch (IOException e1) {
System.out.println("IOException");
e1.printStackTrace();
}
}
}
/**
* 客户端接收消息的线程呦...
*
*/
class SendThread implements Runnable{
private String str;
private boolean iConnect = false;
public void run(){
iConnect = true;
recMsg();
}
/**
* 消息,看招,哪里跑...(客户端接收消息的实现)
* @throws IOException
*/
public void recMsg() {
try {
while(iConnect){
str = dis.readUTF();
taContent.setText(str);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}