Linux环境下即时通信软件设计和实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux环境下即时通信软件设计和实现

Linux环境下即时通信软件设计和实现   作者简介作者简介:李伊林(1984-),男,江西省水利科学研究院助理工程师,研究方向为网络通信;傅小英(1987-),女,南昌大学信息工程学院硕士研究生,研究方向为计算机应用。1QT简介   QT是一个跨平台的C++图形用户界面库,由挪威TrollTech公司于1995年底出品。QT的对象间通信采用信号/槽(Signal/Slot)机制,其中Signal犹如MFC中的事件,而Slot则是响应事件的方法。如果要实现对象间的通信,只需要把一个对象的Slot和另一个对象的Signal连接起来即可实现事件驱动[1]。   由于本系统是通过QT[2]图形开发工具来实现与用户之间的接口设计,所以在Eclipse中如果要使用QT,则需添加QT插件方可建立QT GUI工程文件。   2系统总体设计   本系统实现了Linux系统下的简单通信,同时可以动态刷新在线用户列表,并与其他用户进行聊天通信或传送文件等[3]。如果用户想与其中某位好友聊天,则应该与其建立连接,此时两个客户端有一个作为服务器,另一个作为客户端。本系统的主要架构如图1所示。   系统主要分为客户端和服务器,服务器并不对用户发过来的信息进行转发操作,因为该做法会增加服务器的工作量。它只负责监听客户端的连接请求,同时,在与客户端建立新连接时,服务端会对客户端的端口号进行注册,之后将端口信息提供给每个连接上的客户端[4]。因而两个客户端之间的通信则不需要以服务器作为转发站,而是可以直接进行通信,从而减少了用户之间的通信响应时间。客户端主要可以进行注册、查找密码、添加/删除好友等一些基本操作[5],与好友建立连接之后,还可与好友进行聊天,互传文件等。   图1系统架构   3关键技术实现   3.1客户端Listfriend类实现   Listfriend类主要用来显示当前用户的好友列表,并按好友的不同组号将其进行分类。同时,用户可以通过触发右键事件对自己的好友列表进行修改,如添加、删除、移动好友,修改好友备注,修改用户信息等。在该类中,用户还要对自己的端口号进行监听,如果有好友提出聊天请求,用户可以根据自己的意愿接受或拒绝。或者用户自己向好友提出聊天请求,如果好友拒绝,则关闭对话框[6]。   Listfriend类的主要实现方法如下:   Listfriend::Listfriend(QWidget *parent,User *a_user):QDialog(parent)   {// 右键菜单设置   familyitem = new QAction(tr(移动到家人),this);   connect(familyitem,SIGNAL(triggered()),this,SLOT(moveFamilyGrpSlot()));   ………………………………………………………………   //右键二级菜单   grp1 = new QActionGroup(this);   grp1-addAction(frienditem);   grp1-addAction(familyitem);   grp1-addAction(stuitem);   //为listview控件绑定事件(单键事件、双键事件),以及其它控件的事件绑定(下拉列表、查找按钮、查找好友等)   connect(familylistview, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(getFriNum(QListWidgetItem *)));    ……………………………   //定时器初始化   time = new QTimer();   connect(time,SIGNAL(timeout()),this,SLOT(updateListSlot())); //刷新列表定时向HOST发送信息   connect(time,SIGNAL(timeout()),this,SLOT(sendMsgToHost())); //定时向HOST发送信息   time-start(10000);//10s   3.2客户端Chatting类实现   Chatting类是用户与好友进行聊天的窗口,用户之间可以发送信息:   Chatting::Chatting(QWidget *parent, QString usernum, QString frinum) : QDialog(parent)   {   //向好友发送连接请求 connect to the client   clientsocket = new QTcpSocket(this)

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档