1、小组介绍
2、个人功能描述
当用户成功注册一个账号并成功登录后,一个用户ID想和其他用户ID联系并添加好友,并且不止一个用户使用该程序,则需要利用多线程来实现,进行一个服务器对一个用户开通一条线程,每个用户ID与线程存储在HashMap中,方便服务器可以通过用户想对另一个用户发送相关信息时找到与对应用户ID的线程发送消息包。客户与服务器端需要进行多种通信联系,需要定一个Message类来进行对通信分类(登录校验,聊天信息发送与接收,加好友以及是否同意好友)以方便服务器区分不同的指令发送不同的包给客户端。
3、功能架构图
4、个人任务简述
Message:为客户之间的通信区分信息包
服务器端:为每个线程与服务器创建一个线程,并且同时将用户ID与线程存储到HashMap中,后续根据用户想服务器发送的请求,根据请求中的ID查找服务器与之对应的线程。并且根据用户的不同要求(登录,加好友,发送聊天消息)分别给对应用户ID发送不同类型的消息包
1. 完成的任务与功能:
序号 | 完成功能与任务 | 描述 |
1 | 存储用户ID与服务器线程 | 使用HashMap实现了一个用户ID与一个线程,实现快速查找用户与线程 |
2 | 监听特定端口 | 使用了ServerSocket接受客户连接请求。 |
3 | 服务器端数据的输入输出 | 使用了对象(Object)的输入输出流 |
4 | 多个用户与服务器的通信 | 采用了多线程的技术 |
5 | 数据库设计 | 采用MySQL数据库。表设计符合第三范式。 |
1.*多个用户与服务器的通信
收到用户登录信息,创建一个线程,并将线程与ID写入HashMap
从HashMap中得到所有在线用户的线程并取出ID
向用户发送好友列表包
向用户发送所有用户与其关系,方便统计陌生人,以便添加好友
服务器收到客户端的请求,判断客户端要求,并按要求发送包
聊天请求包
好友在线列表包
添加好友包
收到被请求添加好友一方的同意包,并访问数据库,更新好友列表,且向双方用户更新发送好友列表包
2. *存储用户ID与服务器线程
使用HashMap存储,提高了访问的效率。
3*监听特定端口:
4*服务器端数据的输入输出
客户端的请求较为多且复杂,采用对象输入输出流方便许多