当前位置: 首页 > 市场 > 正文

【Python】【源码】SocketIO做一个网络聊天室软件-服务端源码

来源:哔哩哔哩    时间:2023-09-09 13:32:08

【背景】

公司内部想要有一个可用于局域网网的聊天软件,方便部门同事们业务沟通。

今天主要讲服务端的源码,客户端源码明天再继续写。

【效果】

【思路】

由于我给公司内部的电脑都配置了Python环境,所以就想简单些用python些SocketIO实现一个。


【资料图】

服务端直接python些,在服务器上跑,不需要GUI界面。

客户端GUI就用tkinter,也不用打包,直接终端上run py文件得了。

大致设计就是客户端全连server,server收到任何客户端的message都广播到所有连接着的客户端,在客户端界面上显示出来的效果就是一个聊天室了。

【需要的Package】

主要需要安装的package包括:

需要TCP连接通信所以安装socket

需要多线程所以安装threading

【服务端重点代码】

由于是局域网部署,所以HOST名称就是’’代表本机,PORT选一个不被占用的,我选9090。

如果要部署到外网,就进行相应公网方面的设置即可。

需要创一个Server实例,Clients和nicknames数组用来同步存放接入的客户端和昵称,实现一一对应的管理,后续逻辑中要加一起加,要删一起删。

主线程函数是receive函数,用一个while true循环持续执行,持续监听客户端的连接,通过与Client交互获得昵称后将Client和昵称分别加入Client列表和昵称列表。广播一次”某Client已接入房间“的信息。最后启动该Client的Handle线程继续由该线程处理该Client的相应交互行为。

需要创一个Handle函数,用来处理Client相关操作,包括Client接收信息,广播信息,连接中断时关闭并从列表中移除Client以及相应的nickname。handle函数会被主进程函数receive调用。

需要创一个Broadcast函数用来广播客户端消息,会被Handle调用:

主线程具体源码:

最后,启动主线程:print(“Server running…”)receive()

【完整源码-包括服务端和客户端-直接运行可用】

下载地址:/download/weixin_41697242/88314473

X 关闭

资讯

最近更新

Copyright ©  2015-2022 纵横洁具网  版权所有    
备案号:浙ICP备2022016517号-12     
 联系邮箱:51 46 76 11 3 @qq.com