龙空技术网

基于Python实现群聊

GodFrey12138 137

前言:

当前看官们对“python发消息到微信群”可能比较注重,咱们都需要学习一些“python发消息到微信群”的相关内容。那么小编在网上汇集了一些关于“python发消息到微信群””的相关知识,希望姐妹们能喜欢,小伙伴们一起来学习一下吧!

本文将用Python实现类似QQ,微信群聊的功能,主要分为两大部分,先实现服务器的编写再实现客户端的编写。

服务器编写

这里用到了Python的socket、select模块,socket模块用于创建socket(套接字),select模块用于检测套接字的状态,这里主要用来监听具备读取条件的socket,如果有socket连接服务器或者已经连接服务器的socket有信息发出,则会被select检测到并返回一个列表,里面包含着所有可读的socket。

创建一个服务器套接字有以下步骤:

1、socket模块创建socket;

2、bind绑定IP地址和端口;

3、listen使socket变为被动连接;

4、accept接收客户端的连接;

5、recv/send收发数据。

创建套接字的代码如下,本机是主机的话则只需用一对引号表示本机IP地址:

select部分的代码为服务器代码的核心部分,它实现了监听socket列表的功能,如果某一时刻有socket可以读取,则以列表的形式返回,接下循环遍历所返回的列表,判断是服务器socket可读还是客户端socket可读,然后做出对应的响应。

如果可读的是服务器的socket,说明有新的客户端连接服务器,则服务器socket接受连接请求:

如果可读的是客户端的socket,说明有客户端有信息发送过来,则将信息发送到所有在线的客户端:

以上为服务器的核心部分,除此之外,还需考虑连接异常以及socket关闭的情况:

客户端编写

客户端作用是给用户进行交互,这里用Tkinter库创建三个控件:显示接收信息的文本框,用户输入信息的文本框以及发送按钮,这些控件绑定对应的事件并连接到服务器之后就能实现群聊功能了。

在创建客户端界面之前应先创客户端套接字用于连接服务器,这里的需要写上服务器主机的IP,代码如下:

接下来是创建客户端界面,流程如下:

1、创建一个顶层窗口,可以看作为接收其他控件的容器;

2、创建用于显示信息的Text控件;

3、创建用于输入信息的Text控件;

4、创建用于发送的Button控件

创建控件的代码如下:

这些控件需要绑定对应的事件才能达到效果,各个事件采取函数定义的方式实现:

实现效果

首先运行服务器,接着运行一次客户端代码,实现情况如下:

假设模拟3个人的群聊,服务端的信息显示如下:

客户端聊天实现如下:

但全部客户端全部下线之后,服务器会有响应的记录:

有兴趣获取源码的朋友可以私信回复”群聊“,关注不迷路,感谢支持!

标签: #python发消息到微信群