java两个客户端聊天_Java实现多个客户端聊天程序

复习了一天Java。晚上写了一个HeartChat 0.1,实现多个客户端相互聊天的机制。代码如下:

Java代码 icon_copy.gif icon_star.png

spinner.gif

importjava.awt.*;

importjava.awt.event.*;

importjava.io.*;

importjava.lang.*;

importjava.net.*;

publicclassHeartClientextendsFrame {

/*

*  成员方法出场...

*/

privateTextField tfText;

privateTextArea taContent;

privateSocket s;

privateDataOutputStream dos;

privateDataInputStream dis;

/**

* 注意,入口... ^^

* @param args

*/

publicstaticvoidmain(String[] args) {

newHeartClient().launchFrame();

}

/**

* Loading GU

*/

publicvoidlaunchFrame(){

tfText =newTextField();

taContent =newTextArea();

this.setSize(300,300);

this.setLocation(300,300);

this.tfText.addActionListener(newTFListener());

this.add(tfText,BorderLayout.SOUTH);

this.add(taContent,BorderLayout.NORTH);

this.addWindowListener(newWindowAdapter(){

@Override

publicvoidwindowClosing(WindowEvent e) {

System.exit(0);

}});

this.pack();

this.connect();

this.setVisible(true);

}

/**

* 我在努力地连接服务器中...

*/

publicvoidconnect() {

try{

s =newSocket("127.0.0.1",1720);

dos =newDataOutputStream(s.getOutputStream());

dis =newDataInputStream(s.getInputStream());

newThread(newSendThread()).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的监听器类)

*/

classTFListenerimplementsActionListener{

privateString str;

@Override

publicvoidactionPerformed(ActionEvent e) {

str = tfText.getText().trim();

tfText.setText("");

try{

dos.writeUTF(str);

}catch(IOException e1) {

System.out.println("IOException");

e1.printStackTrace();

}

}

}

/**

* 客户端接收消息的线程呦...

*

*/

classSendThreadimplementsRunnable{

privateString str;

privatebooleaniConnect =false;

publicvoidrun(){

iConnect =true;

recMsg();

}

/**

* 消息,看招,哪里跑...(客户端接收消息的实现)

* @throws IOException

*/

publicvoidrecMsg() {

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();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值