专栏首页叶子陪你玩编程python群聊工具实现(上)

python群聊工具实现(上)

相信都有使用过聊天工具聊过天,不管使用QQ还是微信,首先得注册一个账号,聊天前,你得加对方为好友,之后才可以聊天。

前面也写过一篇使用socket通信的文章,在里面讲到,两台机器要聊天,首先其中一方得知道知道另一方的地址和端口号,然后连接上才可以进行通信。

但是我们的微信和QQ每次可不是固定端口和地址的,因为有时候我们用电脑,有时侯用手机,或者手机很多换着来,按照前面的思路,那一个QQ用户是如何找到另外一个QQ用户的呢?

过程其实是这样的,QQ客户端会请求一个连接给服务器,服务器接收后,知道QQ端用户上线,把qQQ端用户的账号跟目前的ip会记录下来,放在在线列表里或者其他的地方,然后每隔几分钟或者几秒钟给QQ端用户发送心跳包,问他是否还在线,来确保QQ端用户的最 新状态,这里客户端与服务器的通信方式是udp。

今天要实现的是一个群聊小程序,程序有一个服务端和一个客户端,客户端有一个下面如下:

当用户连接上服务器后,服务器就会给用户发送恭喜你已经加入python学习群(后面还会实现在左侧显示用户的名字),当还有其它用户继续加入时,会通知已经加入的用户,说某个用户加入python学习群,之后不管那个用户发送消息,大家的窗口中都会显示出消息来,就好像大家在一个群里一样(更高级的还可以选择在线人员,点对点在两人私聊)。

下面是初版的运行效果图,服务端为了显示效果,保留了终端输出,理论上是躲在后台什么也不用显示的。

不断有用户加入,新用户加入会说恭喜你加入,其它用户会被通知某某加入群聊。

当其中任意一个用户发送消息,其它用户都会同步收到。

实现思路:

1.先实现一个简单的终端显示连接的功能,保证最小功能可以实现。

2.使用QtCreator制作一个UI用户界面。

3.实现UI界面本地的消息发送和接收。

4.将本地的接收替换成socket接收。

5.加入多线程和消息发送,实现既可以显示UI界面,发送消息和接收消息。

(全文完)


本文分享自微信公众号 - 叶子陪你玩编程(gh_cd062460d25e),作者:青叶子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python群聊工具实现(中)

    这里使用的是UDP连接方式。客户端很好理解,就是先给服务端发送一个消息,之后进入主循环等待服务端发送消息过来。

    用户7054460
  • EV3程序(二)拐弯

    我们马路上的车是怎样拐弯的,这个大家应该都见过(司机转动方向盘,让前面的两个轮子转动一定角度,后面的轮子直接跟着往前滚动)

    用户7054460
  • 【pygame系列 第四课 弹球游戏-下 】

    本文主要讲了如何用鼠标控制挡板移动,小球与挡板的一个相互碰撞处理,游戏得分以及游戏结束重新开始等功能。

    用户7054460
  • 福利赠送 | QQ春节鼓力全开活动设定

    ? 腾讯ISUX isux.tencent.com 社交用户体验设计 ? ? 项目背景 春节作为极富中国特色的传统佳节,承载了丰厚的历史文化底蕴。为了让传统...

    腾讯ISUX
  • 系统架构师论文-论基于UML的需求分析(数据安全访问平台)

    首先,我们明确了系统的利益(查书)相2008年3月1日至12月20日,我参加了“数据安全访问平台”项目的开发,担任系统分析员的工作。该项目是某行业用户“数据中心...

    cwl_java
  • 一脸懵逼学习Hdfs---动态增加节点和副本数量管理(Hdfs动态扩容)

    1:按照上篇博客写的,将各个进程都启动起来: 集群规划:     主机名          IP                  安装的软件         ...

    别先生
  • ​多目标优化拥挤距离计算

    [1]支配关系: https://blog.csdn.net/u013555719/article/details/91356078

    DrawSky
  • CornerNet为什么有别于其他目标检测领域的主流算法?

    这篇文章为大家解读由密歇根大学 Hei Law 团队在 ECCV 2018发布的论文,一种新的目标检测算法。

    用户1737318
  • C++ OpenCV图像的重映射

    图像重映射的意思简单的说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。

    Vaccae
  • Kotlin 进阶用法: 内联函数

    继上一篇文章给大家介绍完kotlin的扩展,这篇文章给大家讲讲kotlin中内联函数的用法。

    PhoenixZheng

扫码关注云+社区

领取腾讯云代金券