欢迎来到天天文库
浏览记录
ID:25361949
大小:55.00 KB
页数:7页
时间:2018-11-19
《基于linux平台的通信软件的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于Linux平台的通信软件的设计与实现雷文礼,任新成,高瑛(延安大学物理与电子信息学院,陕西延安716000)摘要:随着智能通信设备性能的日益提升,即时通信系统移植的需求也越来越高,作为一种基于IP协议的应用程序,即时通信系统能够使不同智能设备的用户进行通信。Linux作为一种开源的操作系统平台,在开发即时通信系统方面具有很好的应用前景。基于Linux平台采用Socket网络编程设计并实现了即时网络通信系统,服务器经过测试后,能够稳定运行,客户端图形界面效果良好。该系统的设计为后续基于Linux平台的软件开发应用提供了参考和借鉴。.jy
2、qk_time()该函数读取当前系统时间并随消息一同发出。2.2.2服务器消息处理模块的设计与实现服务器的消息处理模块主要由7部分组成,分别如下:用户登录消息处理模块:当服务器接收到用户消息并判断是登录消息后,服务器将根据用户发送过来的用户名和密码到users.db表中进行匹配,如果匹配成功则把该用户加入到online.db表中,设置用户在线状态为真的,同时调用发送在线列表函数,向添加该用户为好友的用户发送该用户的上线信息。如果匹配不成功,服务器将发送登录失败消息给客户端,要求用户重新登录。添加好友信息处理模块:当服务器收到用户请求加好友
3、的消息时,服务器首先在users.db中查找要被添加的用户是否存在,如果该用户存在则把该用户的信息存储到当前用户的好友文件中,同时在被添加好友用户的_as.db表中保存当前用户的信息。删除好友信息处理模块:当服务器接收到用户的该消息请求时,服务器根据用户提供的好友用户名删除被指定的好友,同时将用户表进行更新,在被删除的好友的被添加好友表_as.db中将当前用户删除。用户聊天信息转发的处理模块:当服务器判断用户所请求的信息为聊天消息后,服务器根据用户所指定的聊天对象到online.db表中查找被指定用户是否在线,如果被指定用户在线则提取他的
4、套接字地址结构,并按照该套接字信息将消息转发。如果用户不在线则将消息标识设定为离线消息,并将该消息写入被指定用户的离线消息文件中。用户下线消息处理模块:当服务器判断用户所请求的信息为下线消息后,服务器将把用户从online.db中删除,设置该用户状态为下线,同时调用发送状态函数,将标志位设置为离线向该用户的发送。离线消息处理模块:当服务器判断用户所请求的信息为读取离线消息后,服务器读用户的离线消息文件,如果该文件中有被标识为新的离线消息时,服务器将把该消息提取出来发送给用户,同时把该消息标识为已读。删除离线消息处理模块:如果客户做出了删除
5、离线消息的动作,那么服务器端将会根据用户的发送信息把该用户的离线消息文件中的离线消息删除。2.3客户端设计软件的客户端采用图形化用户接口方式,Qt图形界面的主要特点就是事件触发,当某一窗体消息需要被处理时,处理引擎就会按照设计做出处理,图3描述了客户端的操作处理流程。客户端运行后,首先登录服务器,如果登陆成功,服务器将在线的用户信息发送给客户端,此时客户端即可查看到用户信息。当用户会话时,聊天信息窗体负责发送和接收用户的聊天信息;用户离线时,该信息通过服务器转发方式发送给离线用户,当对方上线时便可查看该离线消息。2.3.1客户端主要窗口设
6、计本文设计的客户端提供图形用户界面,程序运行后,在主窗体上点击相应状态的按钮就会产生一个相应的操作,包括主窗体,登录窗口,添加用户窗口,系统消息窗口,离线消息窗口,聊天窗口。主窗体:该窗体中包含了所有的用户操作按钮和好友列表,用户的操作都在这个窗体中完成,如图4所示。当用户的操作成功或者失败时,系统会显示一条消息给用户,以便提示用户操作是否成功。在相关的函数内将该窗口的激活属性打开,消息窗口便会自动弹出并显示消息,如图5所示。当用户点击主窗口中的Offline按钮时,该窗体被激活。离线消息可以查看当用户不在线时,有哪些用户向该用户发送了离
7、线消息,如图6所示。聊天窗口:当用户点击好友时,聊天窗口被激活。如图7所示,红色显示的是用户自身,蓝色为。2.3.2客户端功能模块的设计用户认证模块:主要用到的函数为:connec(t),send(),pthread_create()。当用户启动程序后,首先需要用户登陆到服务器才能进一步对软件进行操作,这一部分即为用户认证模块。界面显示模块:当用户成功登陆后,在列表中将会显示用户的信息,在离线消息窗口中会显示接收到的离线消息,这两个视图均是用列表视图来实现的。消息处理模块:当客户端和服务器建立连接后,客户端会创建一个专门的线程维护客户端和
8、服务器之间的连接,该线程调用函数根据从服务器接收到的消息类型选择消息处理模块。更新列表信息:当判断接收到的消息为GIF_ADDRLIST_MSG时,程序将对视图进行刷新以便及时地显示的当前状态
此文档下载收益归作者所有