图3-1 服务器功能示意图
3.3.2 客户端端功能模块划分
客户端主要负责处理用户的操作信息,当用户做出相应的动作时客户端应该能够及时地做出相应,当GTK图形程序检测到鼠标点击时,将触发一个事件,对该事件进行动作的定义和函数的编写便可完成相应的动作。因此,针对这些操作特性,将客户端模块进行如下划分:
登陆功能模块:建立与服务器的连接并登陆,能显示登陆错误信息。 界面显示模块:将在线好友显示在好友列表中,并显示其当前状态。 聊天功能模块:处理各种聊天信息,并判断消息类型。 离线消息模块:接收和发送离线消息,对离线消息进行处理。 配置信息模块:提供基本的软件配置操作。 客户端功能示意图:
客户端 登陆到服务器 配 置信息模块 离 线消息模块 聊 天功能模块 界 面显示模块
图3-2 客户端功能示意图
11
3.3.3 消息标识定义
消息头,包含发送者,信息内容,接受者,发送时间 struct message {
string sender; string mes; string receiver; string time; }
用户信息,包含姓名,密码,头像 struct userinfo {
string name; string pwd; string picpath; }
好友列表 sequence < string > frilist 消息队列
sequence < message > messagelist 用户-用户信息
dictionary < string, userinfo > userinfolist 用户-好友列表
dictionary < string, frilist > userfri 离线消息
sequence < message > offlinemessage 在线用户 sequence < string > liveuser
12
3.3.4 服务器接口函数
在slice语言中,定于服务器接口funcpp,该接口提供以下操作: 登入系统
int Logins (string name, string pwd); 注册用户
int Regists (string name, string pwd, string picpath); 获取用户名
int Getusername (string name); 获取用户头像
string Getfripic(string name); 获取好友列表
frilist Retfrilist(string name); 添加好友
int Addfriend(string name,string friname); 删除好友
int Delfriend(string name,string friname); 将用户信息写入文件 int Writeofflinemesfile(); 读取文件中用户信息
offlinemessage Readofflinemesfile(); 发送消息
int Sendmessage(string recverrname,string sendername,string message,string sendtime); 发送离线消息
int Sendofflinemes(string recvername,string sendername,string message,string sendtime);
获取消息
message Getmessage(string recvername,string sendername);
13
获取是否在线 int Getstat(string name);
获取消息数量 int Getmessagenum(); 获取系统消息数量 int Getsysnum(); 获取系统消息
message Getsysmessage(string recvername); 获取当前时间
char* currenttime(char* curtime, const char* format); 添加日志 void writelog(string s); 用户在线 int Loginser(string name); 离线用户 int Logoutser(string name);
14
相关推荐: