即时通信系统有两种模式:一个是客户机/服务器(Client/Server)模式,即通信双方的用户必须通过服务器来交流;另一个是客户机/客户机(Client/Client)模式,即服务器给通信双方建立一个TCP通道,他们之间的交流在这个通道之上进行,而无须通过服务器就能从一个用户端传到另一个用户端。在系统(孙书梅,2006年)中,使用的是客户/服务器的模式,任何用户可以向服务器申请与另一个用户建立直接联系通道,一旦连接成功,双方就可以进行文件、视频等信息的数据传输等操作。
在网络架构设计方面,每个用户都有自己的账号和密码,这也是用户登录服务器的唯一途径。系统服务器由若干个功能模块组成,它们分别实现系统所要求的一些基本功能,包括用户的身份和权限认证、用户好友名单管理等。此外,即时通信系统要实现接近实时的信息传输,必须随时知道信息的主机是否在线,所以还要有一个模块专门负责记录用户的在线状态。
8.3.1 处理用户登录
登录验证主要是对试图登录的客户端进行权限验证。服务器获得客户端发送来的用户名和密码,然后查询数据库的用户基本数据表,在表中查找是否存在该用户,如果该用户不存在或用户名与密码不匹配,服务器将验证失败的结果发回给客户端,拒绝其登录请求。如果验证通过,服务器会将数据库中的用户状态改为在线,并把用户的好友信息提供给用户。服务器处理登录验证服务的流程如图8-1所示。
定义协议格式为11/用户的ID/密码/本地PI地址,协议头erecstr.Letf(2)赋值为11。
图8-1 处理用户登录验证流程图
8.3.2 处理用户呼叫好友
用户如果想跟好友进行通信,必须跟对方建立连接,首先得呼叫好友。呼叫时好友可能处于各种不同的状态,如不在线、隐身或正在通话中等,服务器会根据好友不同的状态做出不同的处理。服务器处理用户添加好友的流程如图8-2所示。
定义协议格式为75/用户的ID/好友ID,协议头recestr.Left(2)赋值为75。
图8-2 处理用户呼叫好友流程图
8.3.3 处理用户下线
用户下线时,服务器将其状态修改为初始状态,并通知用户的在线好友该用户下线。服务器处理用户下线的流程如图8-3所示。
定义协议格式为61/自己的ID,协议头recestr.Left(2)赋值为61。
图8-3 处理用户下线
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。