首页>代码>java swing开发多线程聊天室界面>/LTS/src/lts/ClientThread.java
package lts;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.swing.JTextArea;

public class ClientThread extends Thread   //处理消息群发的线程  专门处理消息群发
{
	//属性
	List<Socket> clients;//list集合
	String Mess;//消息
	BufferedReader br=null;
	JTextArea showmess;
	//构造方法
	public ClientThread(List<Socket> clients,String Mess,BufferedReader br,JTextArea showmess)
	{
		this.clients=clients;
		this.Mess=Mess;
		this.br=br;
		this.showmess=showmess;
		//=====构造方法只执行一次,初始化=只传送某某连接成功
		try {
			for (int i = 0; i < clients.size(); i++) 
			{ // 循环所有的连接,发送数据  **发送给客户端某某连接成功
				OutputStream os = clients.get(i).getOutputStream(); //发送给ClientRecive类
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
				bw.write(Mess + "\n");
				bw.flush();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		//============================================
	}
	//run方法
 	@Override
	public void run() 
 	{
		while (true) {//一直在接收消息
			try {
				String s = br.readLine();//按行读取  要加\n
				//System.out.println(s);
				//==========================================================
				Date d=new Date();
				SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
				String t=sdf.format(d);
				//==========================================================
				String s2[]=s.split("//");//定义一个数组,以*将字符串分割,以获得name
				String name = s2[0];//得到用户name
				String message=s2[1];
				//System.out.println(name+message);
				//==========================================================
				//做一个判断,如果消息中有“断开连接”,显示系统消息
				if(message.indexOf("【断开连接】")!=-1){
					showmess.append("系统消息"+" "+t+"\n"+" "+name+message+"\n");
				}else{
					showmess.append(name+" "+t+"\n"+" "+message+"\n");//服务器接收来自客户端的消息 显示到服务器文本区域上
				}
				//服务器接收到后在发给其他客户端
				for (int i = 0; i < clients.size(); i++) {
					OutputStream os = clients.get(i).getOutputStream(); // 发送给ClientRecive类
					BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
					bw.write(s + "\n");
					bw.flush();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		//
	}
//==方法结束======
}

最近下载更多
yuchunxing  LV1 2023年9月2日
青柠编程  LV13 2023年4月18日
referrer  LV1 2022年12月25日
qqyx777  LV1 2022年6月27日
微信网友_6003487859068928  LV5 2022年6月15日
123456qiqiqi  LV1 2022年5月27日
tdcq123  LV14 2022年3月13日
bbbookworm  LV1 2022年2月19日
weny_QAQ  LV2 2021年12月22日
Sunknown  LV1 2021年11月30日
最近浏览更多
3263394665  LV9 8月31日
周鸣郝  LV2 5月26日
krispeng  LV13 4月16日
dapeng0011  LV15 2月25日
陈小灏  LV15 2023年12月27日
暂无贡献等级
yuchunxing  LV1 2023年9月2日
fuyouou  LV5 2023年6月29日
CL200228  LV4 2023年5月5日
gzryue  LV6 2023年3月8日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友