JChatting

JChatting

JChatting
《JChatting》是基于Java Swing 和 Java Socket原生API开发的局域网聊天系统,致力于跨平台信息交流,组建小规模局域网聊天系统。

JChatting简介

JChatting是托管在google code上的一个开源项目,采用宽松的MIT License开源协议,软件的第一个版本发布与2011年10月。

JChatting功能说明

1.用户注册,单点登录

2.好友添加、删除、修改;在线好友聊天,离线好友留言功能;

3.好友上线离线即时更新或者提醒;

4.创建、加入、退出Chat群;群聊功能;

5.用户之间的文件发送功能(无文件大小限制);

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 between friends(No file size limitations);

6.Encrypt using RSA;

7.Using RMI to add more server,reduce the load of single server.

JChatting起源

项目开始于2011年10月1号,来源于研究生一年级课程《分布式计算机系统》,课程导师要求制作一个简单的chat程序,语言不限,正巧十一长假期间没有安排,作者(红色石头主页)想要做就好好做做试试,所以写了大概一个星期的代码完成初始版本,实现以上介绍的功能。采用sql server2000 + Java Swing + Java Socket原生api完成。后续于2012年3月筹备大手笔更新版本,打算采用mysql + Java Mine + Java SWT重新架构,使源码质量高,可读性,可学习型强,扩展性高,具有前瞻性设计。但是由于实验室项目安排问题,一直搁置,这里再次提出和介绍,以激励自己完成既定的计划。

JChatting开发思路

1. 消息的发送采用Java Socket TCP协议,数据发送采用字符流,后期会改为对象流简化操作。

2. 用户登录之后,会在服务器端用户登录的socket,用户点对点发送消息和用户发送群消息,均发送到服务器端,由服务器解析数据包,将信息转发给收信socket。即用户之间的通信是采用服务器转发,而非用户与用户之间直连。这样设计是为了更好的监控聊天过程,统计聊天数据,同时减少客户端端口占用。

3. 用户之间发送文件,是发送端发送文件信息和个人的ip信息到接收端并建立文件发送的server socket,接收端接受文件发送之后,新建线程创建socket连接接收到的ip信息,其中端口是选择一个从8089开始未被占用的端口。所以文件发送是客户端之间直连发送文件,这样设计是为了减轻服务器端压力,加快文件发送速度。

4. 用户还有信息目前是用户登录之后,服务器会将数据库信息以rsa加密的方式发送给客户端,客户端使用这些信息直连数据库获得,这是一种不安全、非主流的做法,后续将采用rmi或者web service替换,并进行相应的session认证。

5. 多服务器减轻服务器压力,突破并发瓶颈,用户登录之后会将个人session和socket保存到服务器,后续的消息发送会有服务器转发,并发较大的时候,单个服务器会造成较大的消息延迟,甚至timeout,目前采用用户id%n的方法将用户信息散列到n个服务器,即使用n个服务器并行转发用户消息,目前的散列函数id%n存在散列不均的问题,待改进。

相关词条

相关搜索

其它词条