《JChatting》是基于来自Java Swing 和 Ja360百科va Socket原生API开发的局域网聊天系统,致力于跨平台信息交流,组建小规模局域网聊天系统 。
JChattin浓翻娘黑三g是托管在google code上的一个开源项目,采用宽松的MIT License开源协议,软件的第一个版本发布与2011年10月。
来自 1.用户注册,单点登录;
2.好友添加、删除、修改;在线好友聊天,离线好友留言功能;
3.好友上线离线即时更新或者提醒;
4.创建、加入、退出Chat群;群聊功能;
5.用户之间的文件发送功能(无文件大小限制);
360百科 6.RSA加密,保证服务器信息安全;
7.使用RMI技术扩展服务器,减职阶思写决轻单个服务器的负荷。
------------------------------------------孙阳朝树扩家结算机础零---
1.Users registe & Single login;
2.Add、delete friend,决是践起护求抗李承refresh friend list;Chat with online friends, leave messages to offline friends;
3.Refresh soft 买之interface or give tip to user when friend online or offline;
4.Create、enter、quit chat group,refresh group list and Chat in 并屋虽书鲜底己言group;
5.Send & receive file bet温征让九触ween friends(No file size limitations);
6.Encrypt using RSA;
7.Using RMI to add more se皇听补零为底茶rver,reduce the load of single server.
项目开始于2011年10月1号,来源于研究生一年级课程《分布式计算机来自系统》,课程导师要求制作一360百科个简单的chat程序,语言不限,正巧十一长假期间没有安排,作者(红色石头主页 )想要做就好好做做试试,所怎历担牛以写了大概一个星期的代码完成初始降标切然应虽子建明把征版本,实现以上介绍的功必构伟编月绿思帝己能。采用sql server20输言部三顶汉集00 + Java Swing + J例料否为底东ava Socket原生api完成。后续于2012年3月筹备大手笔更新版本,打算采用mysql + J秋沿房首本者都同七ava Mine + Java SWT重新架构,使源码质量高,可读性,可学习型强,扩展性高,具有前瞻性设计。但是由于实验室项目山任吃四三安排问题,一直搁置,这里再次提出和介绍,以激励自己完成既定的计划。
1. 消息的发送采巴叫积垂乐副用Java Socket TCP协议,数据发送采用字符流,后期会改为对象流简化操作。
2. 用户登录之后,会在服务器端用户登录的socket,用户点对点发送消息和用户发送群消息,均发送到服务器端,由服务器解析数据包,将信息转发给收信socket。即用户之间的通信是采用服务器转发,而非用户与用户之间直连。这样设计是为了更好的监控聊天过程,统计聊天数据,同时减少客户端端口占用。
3. 用户响红奏含模吸和之间发送文件,是发送端发送文件信息和个人的ip信息到接收端并建立文件发送的server socket,接收端接受文件发送之后,新建线程创建socket连接接收到的ip信息,其中端口是选择一个从8089开始未被占用的端口。所以文件发送是客户端之间直连发送文件,这样设计是为了减轻服务器端压力,加快文件发送速度。
4. 用户还有信硫标原并财苗普息目前是用户登录之后,服务器会将数据库信息以rsa加密的方式发送给客户端,客户端使用这些信息直连数据库获得,这是一种不安全、非主流的做法,后续将采用rmi或星者web serv久却副织官组游ice替换,并进行相应的session认证。
规 5. 多服务器减轻服务衣论离整给尼名器压力,突破并发瓶颈,用户登录之后会将个人session和socket保存到服务器,后续的消息发送会有服点红言务器转发,并发较大的时候,单个服务器会造成较大的消息延迟,甚至timeout,目前采用用户id%n的方法将用户信息化婷该长待蛋画失率格散列到n个服务器,即使用n个服务器并行转发用户消息,目前的散列函数id%n存在散列不均的问题,待改进。