本系统主要通过Socket原理实现。服务器与客户端的Socket类型分为面向连接的字节流类型和面向无连接数据报类型。面向连接的字节流类型的原理相对比较复杂,在这种类型的Socket的工作过程中,必须首先启动服务器端,通过调用socket()函数建立一个Socket对象,然后调用Bind()函数将该Socket对象和本地网络地址绑定到一起,再调用Listen()函数使该Socket对象处于侦听状态,并规定它的最大请求的数量。面向无连接数据报类型的Socket工作过程较为简单,双方不需要进行太多的沟通与交互,客户机直接将用户的请求打包发送到服务器端,省略了建立一个固定信息通道的过程,服务器端也是直接将处理的结果发送给客户端,每个发送的数据报都携有传递所需要的地址信息。
2 需求分析
2.1 硬件软件需求
编程语言:Java
开发工具:Eclipse
操作系统:WIN7
2.2 系统开发目标
根据即时通讯系统的定义,即时通讯首先要求即时、准确。为达到这一目标,服务器端和客户端就要完美配合,“协同工作”。因此聊天系统具有以下要求:
服务器端:
1.能够正确地、快速地启动服务器。
2.监听指定的端口,等待客户端的连接。
3.建立与客户端的逻辑连接,并能通知用户的其他好友。
4.对新上线的用户更新在线用户列表。
5.接收客户端的消息,并能准确无误地处理消息且发出消息到对应客户端。
6.及时地反映发出本地消息和聊天消息。
7.能够给全部用户发送系统消息。
8.当好友断开与服务器连接时,服务器能正确地断开连接,并通知其他用户。
客户端:
1.能够正确地启动应用程序,并能向服务器发出连接请求。
2.能够和指定好友发出和接收消息。
3.能够和所有好友发出和接收消息。
4.能够和指定好友发送和接收文件。
5.能够和指定好友发送和接收窗口抖动。
6.能够正确地断开与服务器的连接。
2.3 业务需求
即时通讯系统在消息传送中具有即时、快速且准确的特点。在C/S架构模型的系统设计中,服务器端必须正确地建立与客户端的连接并能够正确地断开;能及时地接收消息并且及时处理和发送接收到的数据;能及时地通知用户当前好友在线状况;具有处理异常数据的能力。对应的客户端必须快速地检查是否能够连接到服务器端;能正确地获得和反映当前好友在线状况;能够正常与特定好友交流;能及时地接收到服务器端的数据且及时处理数据,并能将处理结果反映给用户。
2.4 功能需求
1.用户注册:任何未注册的用户都可以在注册界面注册一个新的账号,之后便可以通过此账号登陆,注册时需要填写昵称、密码、头像等基本信息,注册成功后服务器会返回一个唯一的号码ID。
2.账号登陆:使用服务器返回的号码ID以及注册时填写的密码登陆服务器。
3.好友聊天:登陆服务器后进入群聊界面,在群聊界面点击上线好友头像选择私聊即可进行单独聊天。
4.文件传输:好友与好友之间可以互相传送文件,在群聊界面点击好友头像选择文件传输即可进行文件的传送。
5.窗口抖动:好友与好友之间可以互相抖动窗口,在群聊界面点击好友头像选择窗口抖动即可发送抖动引起好友注意。 java+socket基于Windows平台的即时通讯系统设计(4):http://www.youerw.com/jisuanji/lunwen_37666.html