资源简介
主要由多线程,图形化界面,socket网络等写的简单的java网络聊天室
代码片段和文件信息
package com.zk.chat;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class ChatClient extends frame{
Socket s = null;
//创建单行文本输入框
TextField tfTxt = new TextField();
TextArea taContent = new TextArea();
Thread tRecv = new Thread(new RecvThread());
DataOutputStream dos = null;
DataInputStream dis = null;
private boolean bConnected = false;
public static void main(String[] args) {
new ChatClient().launchframe();
}
public void launchframe(){
//设置位置
setLocation(400300);
//设置容器大小
this.setSize(300 300);
//布局管理器 5个区域
add(tfTxtBorderLayout.SOUTH);
add(taContentBorderLayout.NORTH);
//调整此窗口的大小,以适合其子组件的首选大小和布局
pack();
//注册监听器
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
disconnect();
System.exit(0);
}
});
tfTxt.addActionListener(new TFListener());
//设置frame为可见,默认为不可见
setVisible(true);
connect();
tRecv.start();
}
public void connect(){
try {
s = new Socket(“127.0.0.1“8887);
//DataOutputStream()能够写数据流
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
System.out.println(“connected“);
bConnected = true;
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void disconnect(){
try {
dos.close();
dis.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*try {
bConnected =false;
tRecv.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dos.close();
dis.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/
}
private class TFListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
String str = tfTxt.getText().trim();
//taContent.setText(str);
tfTxt.setText(““);
try {
//DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF(str);
dos.flush();
//dos.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
class RecvThread implements Runnable{
public void run() {
try {
while(bConnected){
String str;
str = dis.readUTF();
//System.out.println(str);
taContent.setText(taContent.getText()+‘\n‘+str);
}
} catch(SocketException e){
System.out.println(“退出了,byebye“);
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 435066 2018-01-05 15:28 java聊天室\1.doc
文件 299 2017-10-31 20:12 java聊天室\代码\.classpath
文件 383 2017-10-31 20:12 java聊天室\代码\.project
文件 598 2017-10-31 20:12 java聊天室\代码\.settings\org.eclipse.jdt.core.prefs
文件 734 2017-11-03 11:05 java聊天室\代码\bin\com\zk\chat\ChatClient$1.class
文件 1562 2017-11-03 11:05 java聊天室\代码\bin\com\zk\chat\ChatClient$RecvThread.class
文件 1307 2017-11-03 11:05 java聊天室\代码\bin\com\zk\chat\ChatClient$TFListener.class
文件 2896 2017-11-03 11:05 java聊天室\代码\bin\com\zk\chat\ChatClient.class
文件 2677 2017-11-03 11:05 java聊天室\代码\bin\com\zk\chat\ChatServer$Client.class
文件 1850 2017-11-03 11:05 java聊天室\代码\bin\com\zk\chat\ChatServer.class
文件 3071 2017-10-31 22:06 java聊天室\代码\src\com\zk\chat\ChatClient.java
文件 2381 2017-10-31 22:49 java聊天室\代码\src\com\zk\chat\ChatServer.java
目录 0 2018-01-05 15:25 java聊天室\代码\bin\com\zk\chat
目录 0 2018-01-05 15:25 java聊天室\代码\src\com\zk\chat
目录 0 2018-01-05 15:25 java聊天室\代码\bin\com\zk
目录 0 2018-01-05 15:25 java聊天室\代码\src\com\zk
目录 0 2018-01-05 15:25 java聊天室\代码\bin\com
目录 0 2018-01-05 15:25 java聊天室\代码\src\com
目录 0 2018-01-05 15:25 java聊天室\代码\.settings
目录 0 2018-01-05 15:25 java聊天室\代码\bin
目录 0 2018-01-05 15:25 java聊天室\代码\src
目录 0 2018-01-05 15:25 java聊天室\代码
目录 0 2018-01-05 15:29 java聊天室
----------- --------- ---------- ----- ----
452824 23
- 上一篇:Java 模拟进程调度算法
- 下一篇:Java2D之Text实现艺术字编码
评论
共有 条评论