本次设计是一个简易的局域网聊天,功能设计主要分为群聊和私聊两部分,每部分都支持基础聊天以及文件传输功能。参考了《Qt及Qt Quick开发实战精解》中群聊实例,在群聊的基础设计了私聊这部分内容以及其他一些功能。下面我们就介绍下整体的设计以及实现。

设计时这里用的是主机的ip地址,可使用多台主机运行程序进行测试,确保多台主机连接同一局域网,并禁用本地连接以及其他的IP地址,保证只有本台主机的局域网IP存在,否则即使后面运行成功,在其他客户端上也无法显示你主机信息,传输文件以及其他的一些功能。

文件的传输、私聊采用的是TCP、UDP,其中UDP中主要用来保存进行不同操作的消息状态(新用户的加入、消息的发送,传输文件、拒绝接受文件、用户离开、进入私聊阶段),然后通过广播发送给其他的客户端从而保证各个客户端的即时性,各个客户端接受到不同的消息状态进行响应执行操作。程序执行时属于新用户加入阶段, 此时所有用户都处于同一界面,相当于群聊阶段,可发送消息进行群聊。TCP主要用来传输文件,当接受到由UPD发送的传输文件消息时,发送文件一方作为Server端,接受文件一方作为Client端,实现点到点之间的传输。过程我们在下面介绍下。

(一)首先是新用户加入阶段,对于新用户的加入我们会显示主机的用户名,每加入一个客户端,在其他客户端以及自己客户端中显示用户名、主机名、IP地址、并在消息记录框中显示**在线,此时某一方发送消息在其他客户端即可实时收到消息,实现群聊功能(图一)。当某个客户端关闭或退出程序时,此时在消息框记录框中显示时间离开,当再有新用户加入时又再次显示***在线。(本机局域网的IP是192.168.10.137),另一客户端IP(192.168.10.119)

图一
图二

(二)消息发送框上分别代表字体样式、字体大小、加粗、斜体、下划线、颜色、文件传输、保存聊天记录、以及清除聊天信息。

(三)进行文件的传输。在文件传输前,我们首先选择要发送到的IP地址,从右侧的显示主机信息中选择,若未选中,会提示用户未选中并重新选择,在选中接收文件的IP后(群聊可以选中自己IP进行测试),点击消息输入框上的传输文件按钮,此时进入Server文件发送界面。选择发送文件进行发送,此时另一选中的用户弹出Client文件接收界面,选择是否接收(程序里有个Bug,这里不能选择否,若选择后程序虽不会崩溃,但下次该用户在群聊界面不能接收刚刚发送端那个IP所发送的文件,对于其他的用户,他仍可以接收,但在私聊界面,传输文件时不会有这样的问题,应该是内存释放出了些问题,暂时还未解决)。

(四)私人聊天。从右侧显示主机信息栏中双击,若选中自己会显示无法与自己聊天界面,当选中其他用户时,此时弹出私人聊天界面,并显示与某某聊天中,获得它的IP地址,但此时对方不会弹出与你聊天的界面,只有当你发出消息或要求传输文件时它才弹出与你的聊天界面,当用户离开聊天界面时,又会显示用户****离开了聊天会话界面,但此时你依旧可以发送消息或者文件,重新使他进入聊天界面。

(五)私聊界面的文件传输与上面一样,但避免了上面提到的问题,可以拒绝接受文件,对下次的文件传输没有任何影响(什么原因,我也还在找,额额),所有当传输文件我还是用私聊界面的比较好些。

总结:基本也就这么多,需要注意的就是要确保局域网,禁用掉其他IP,在主界面对于文件的传输需要注意些。另外,目前没有注册、登录功能,对于数据库的操作,后面打算把这些也添加进去,登录后进入用户选择的主界面,可以群聊、私聊、在私聊中添加语音功能,界面也可以在美化一些,这样才更真实,代码解释大家可以去看《Qt及Qt Quick开发实战精解》这本书,对于私聊这块大家也可以下载下面的源程序链接,注释不是特别多。

应用程序测试链接: https://pan.baidu.com/s/1nhgeRdWWScAVRXhUMIHTbw 密码: pc5x

源程序代码下载链接:https://download.csdn.net/download/hfuu1504011020/10617985

Qt局域网聊天(群聊和私聊)相关推荐

  1. Qt局域网聊天(私聊/截图/文件/语音)

    本次设计是一个简易的局域网聊天,功能设计主要分为群聊和私聊两部分,每部分都支持基础聊天以及文件传输功能,私聊页面相较于主页面支持更多功能,例如表情发送.窗口抖动,语音聊天等.参考了<Qt及Qt ...

  2. Netty+Android搭建一个简易聊天室(实现群聊和私聊)

    零,前言 JRBM项目中无论是好友私聊,公开聊天室,还是比赛平台都需要用到长连接,之前没有接触过网络通信等知识,更别说框架了,因此直接上手netty确实有些困难,在前期主要是在b站上看(https:/ ...

  3. 每日分享(四合一即时通讯聊天源码APP群聊、私聊、朋友圈)

    demo软件园每日更新资源,请看到最后就能获取你想要的: 1.Python整洁编程 完整版PDF Python 与其他语言的不同之处在于,它是一种简单而有深度的语言.因为简单,所以谨慎编写代码要重要得 ...

  4. TCP多人聊天程序Java实现(群聊,私聊,在线用户,踢出用户)

    本程序在程序 https://blog.csdn.net/joffy/article/details/18079331 的基础是上添加了私聊,踢出用户两个功能. 由客户端和服务器端构成程序,程序借助J ...

  5. Java项目模拟QQ群聊和私聊(网络编程+多线程)

    [文末获取资源] 前几天学习了多线程,最近在学习网络编程,了解了UDP之后又学习了TCP,听一下大佬说,要看看你这两个东西掌握的怎么样,最好的办法就是写一个模拟QQ群聊和私聊,经过这几天的学习,以及不 ...

  6. Qt 局域网聊天(功能完善,界面美观,免费下载)

    Qt 局域网聊天(功能完善,界面美观,免费下载) 高清截图 登陆界面 聊天界面 GIF 登陆界面 发送消息 发送图片 设置头像 历史消息 查看名称 房间人数 调整大小 窗体全屏 截屏(最新的Ubunt ...

  7. IM多人聊天-群聊头像合成方法

    IM多人聊天群聊头像合成方法 群聊中将多个成员的头像合成为群聊的头像: ViewController.m // // ViewController.m // imageMerge // // Crea ...

  8. 基于JavaSwing开发聊天室(QQ聊天 群聊)系统+论文+PPT 大作业 毕业设计项目源码

    基于JavaSwing开发聊天室(QQ聊天 群聊)系统+论文+PPT(毕业设计/大作业) 开发环境: Windows操作系统 开发工具: Eclipse/Myeclipse+Jdk 演示视频: jav ...

  9. socket聊天室实现-群聊,私聊,好友列表,完整版

    效果图 登录.好友上线,下线均提示. 点击好友列表所有人,发送消息,既为群聊 点击好友列表,好友名字,既为选中此好友进行私聊 服务器端代码 ChatRoomServer package sram.se ...

最新文章

  1. shell中的IFS
  2. 使用 FRP 反向代理实现 Windows 远程连接
  3. linux空白屏幕,如何在Linux中的Logitech R400上使空白屏幕键正常工作?
  4. 使用AutoIt实现UI自动化上传附件
  5. java错误 找不到或无法加载主类
  6. HX720/HX711 数据采集及处理姿态解析(公式及源码)
  7. oracle exacc,【学习笔记】Oracle 11GR2新特性Adaptive Cursor Sharing(ACS)
  8. 旅行商问题的n种解法
  9. eclipse添加源码的另外一种方法
  10. 局部页面切换url为什么不变_python爬虫 - 翻页url不变网页的爬虫探究!
  11. html一级子元素,获取子元素_html/css_WEB-ITnose
  12. 学python编程_程序员学Python编程或许不知的十大提升工具
  13. swagger默认访问地址
  14. 解决多次点击出现蓝色背景
  15. linux无法访问移动硬盘,移动硬盘“无法访问”的解决方案
  16. 易语言超级算法转php,易语言 PHP RC4算法同步应用源码
  17. 如何获取系统当前时间
  18. nyist 三点顺序
  19. 伯远帖 - Java Spring 4.0 集成 MyBatis 3.1 支持
  20. 成功实施年终考核的6个步骤(zt)

热门文章

  1. 【Python-分布式】MPI集群环境搭建
  2. 如何用计算机蓝牙放音乐,电脑如何连接蓝牙音箱放音乐(Win7系统笔记本电脑连接蓝牙音箱的操作方法)...
  3. maven管理的子父项目打包报错
  4. asp毕业设计——基于asp+access的精品在线试题库设计与实现(毕业论文+程序源码)——精品在线试题库
  5. OpenCV读取连续多张图片
  6. 手机h5适配不同分辨率的问题
  7. SEO优化实战经验总结:内链的优化
  8. Edge打开报Error code: STATUS_INVALID_IMAGE_HASH
  9. 9343拆机 xps13_网友推荐:Dell 戴尔 XPS 13-9343 (i5、128G SSD、板载8G双通道、13寸FHD高清屏)...
  10. Apache网页的优化,安全与防盗链