TCP多人聊天室实现简单思路

TCP多人聊天室实现

1.1 分析
客户端
	功能:
		1. 数据发送
		2. 数据接收
	技术:
		1. socket
		2. 输入流和输出流
		3. 多线程,客户端功能模块有两个线程
	聊天:
		1. 群聊
		2. 私聊
			私聊前缀 @服务器用户ID号:msg
	
服务器
	功能:
		1. 数据转发
		2. 用户注册
	技术:
		1. ServerSocket
		2. 每一个用户对应的Sokcet对象
		3. 多线程同时在线
		4. HashMap<Integer, 用户>
	数据转发:
		私聊前缀判断
		群聊所有人发送
1.2 客户端实现
数据发送:
	使用输出流发送数据给服务器
	遵从Runnable接口
数据接收:
	使用输入流从服务器端接收数据
	遵从Runnable接口

客户端主方法:
	用户名提交
	数据发送
	数据接收
		多线程启动
1.3 资源关闭问题
代码中操作了大量的输入流和输出流,这里都需要进行关闭操作。
	DataInputStream, DataOutputStream, BufferedReader, Socket
	
以上这些资源都是Closeable接口的实现类,都有对应的Close方法
封装一个工具类:
	提供一个closeAll方法,参数为符合Closeable接口的实现类对象。
	这里可以考虑可变长参数
		Closeable... closeable
	
	可变长参数在方法中使用的过程里面是对应一个数组,这里完成可以使用增强for来使用

工具类名:
	CloseUtil
		public static void closeAll(Closeable... closeable)
1.4 功能拓展
1. 用户退出
	用户输入指定字段之后可以退出
	客户端Socket服务
	服务端Socket服务
	涉及资源关闭,线程关闭

2. 用户异常退出
	在运行过程中发现问题,需要及时处理,关闭对应的资源,终止对应的线程

3. 服务器保存所有的聊天记录
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章