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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.JTextArea;

public class ServerThread extends Thread 
{
	//属性
	ServerSocket  server;
	JTextArea showmess;
	JTextArea showuser;
	String sendMess;
	List<Socket> clients=new ArrayList<Socket>();
	//get和set方法        **可以不用get和set方法**
	public List<Socket> getClients() {
		return clients;
	}
	public void setClients(List<Socket> clients) {
		this.clients = clients;
	}
	//构造方法
	public ServerThread(ServerSocket  server,JTextArea showmess,JTextArea showuser){
		this.server=server;
		this.showmess=showmess;
		this.showuser=showuser;
	}
	//run方法
	@Override
	public void run() 
	{
		while (true) //需要不断执行,等待客户端的连接
		{ 
			try 
			{
				//客户端连接服务端向服务端发送了一条语句,语句格式为name+@,服务端读取消息内容
				Socket socket = server.accept();//等待客户端连接
				InputStream is = socket.getInputStream();//数据来了 输入流读数据 客户端发来的 -socket转字节流
				BufferedReader br = new BufferedReader(new InputStreamReader(is));//字节流转字符缓冲流
				String s = br.readLine();//定义s接收数据
				sendMess =s+"连接成功";// 重新组装消息,准备数据
				//============================================================
				clients.add(socket);//将所有的连接保存到list里,以便完成群发消息                    **只要客户端上线就加入list集合
				
				//断开时要移除
				
				//======================================================
				Date d=new Date();
				SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
				String t=sdf.format(d);
				//========================================================
				showmess.append(t+"\n"+" "+sendMess+"\n");//将用户已经上线的消息显示到客户端文本区域中
				showuser.append(s+"\n");//显示到在线用户列表中
				//
				ClientThread client=new ClientThread(clients,sendMess,br,this.showmess);//一个客户端创建一个线程来完成消息的群发
				client.start();
			} catch (IOException e) {
				System.out.println("错误");
			}

		}
	}
//结束
}
最近下载更多
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日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友