只需五步,快速构建Python聊天室(python制作聊天软件)
off999 2024-11-15 23:07 18 浏览 0 评论
在本文中,我们来谈一谈如何构建一个Python聊天室。
注意:你不需要安装任何额外的Python包。
作者 | Dark Soulz
译者 | 弯月,责编 | 郑丽媛
头图 | CSDN 下载自东方 IC
出品 | CSDN(ID:CSDNnews)
概念介绍
大致来说,Python聊天室使用了套接字编程和多线程的概念。聊天室分为两个部分:服务器端程序socketserver.py和客户端程序chat.py。它支持聊天室或同时与多个用户连接的聊天框。但是,在进入下一阶段之前,我们先来学习套接字编程和多线程。如果不明白这两个概念,初学者很难理解下面构建的项目。
套接字编程
一般来说,你可以将套接字视为双向通信通道中的端点,帮助服务器和一个或多个客户端组加入通信。它允许客户端通过服务器与其他客户端交互。
多线程
多线程是一个子进程,可以负责运行其他任何线程中的各个命令。当用户连接到服务器时,就会创建一个新的线程,并根据为每个客户端的规范构建的套接字对象,通过单独的线程实现服务器到客户端的通信。
聊天室的工作原理:我们的聊天室使用计算机的本地IP地址,在服务器端脚本和客户端脚本之间进行通信。每当客户端连接到聊天室时,它就在服务器端脚本中显示“已建立连接”,并允许客户端开始聊天。聊天室可以允许多个客户端一起使用,并与有限的本地IP一起使用。这反过来避免了为个人运行程序的复杂性。
项目要求
● 一台拥有I5核心处理器的优质PC,负责运行各种程序。
● 一个用来写注释的记事本。
● 一个IDE,通常是VS Code Editor、Atom或Sublime。
● 最重要的是,你必须在PC上安装Python才能执行任何Python程序。
● 专注。
如何构建Python聊天室?
首先,在桌面上创建一个名为Python chatbox或chatroom的文件夹,用于保存所有的文件。
然后,将你的文件拖到IDE中,并创建两个文件,即chat.py (客户端脚本/GUI部分)和socketserver.py(服务器端脚本)。
注意:无需安装任何Python软件包,因为Python安装包自带所有的库。
第三,仔细阅读各个文件中的代码,并把这些代码放到你的文件中。
第四,首先执行Python socketserver.py,然后执行Python chat.py
第五,测试你的聊天框是否可以正常工作,然后这个DIY项目就完成了。
代码
socketserver.py
##Python codes to do server-side part of chat room.import _threadimport socketimport threading"""AF_INET is the address domain of thesocket. This is used when we have an Internet Domain withany two hosts The 2nd context of the code is the type of socket. """s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)# piece of code to allow IP address & Porthost="127.0.0.1"port=5000s.bind((host,port))s.listen(5)clients=#code to allow users to send messagesdef connectNewClient(c):while True:global clientsmsg = c.recv(2048)msg ='Online ('+str(clients.index(c)+1)+'): '+msg.decode('ascii')sendToAll(msg,c)def sendToAll(msg,con):for client in clients:client.send(msg.encode('ascii'))while True:c,ad=s.accept# Display message when user connectsprint('*Server Connected ')clients.append(c)c.send(('Online ('+str(clients.index(c)+1)+')').encode('ascii'))_thread.start_new_thread(connectNewClient,(c,))
chat.py(GUI部分)
#Gui Programming Partimport tkinterimport socketimport _threadimport sys# Code to create a new client socket and connect to the serveri = 3client = 0start = Truedef sendMessage :msg = txt.getclient.send(msg.encode('ascii'))def recievingMessage (c):global iwhile True :msg=c.recv(2048).decode('ascii')if not msg :sys.exit(0)global startif (start) :start = False#tkinter codes startswindow.title(msg)continuemsglbl = tkinter.Label(window,text=msg)msglbl['font']=("Courier",10)msglbl['bg']='black'msglbl['fg']='#0aff43'msglbl['width']=50msglbl.grid(columnspan=2,column=0,row=i,padx=5)i += 1#Socket Creationdef socketCreation :c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)c.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)#Local Host# import all functions /# everthing from chat.py filehost = '127.0.0.1'port = 5000c.connect((host,port))global clientclient = csend['command'] = sendMessage_thread.start_new_thread(recievingMessage, (c,) )#Creating a windowwindow = tkinter.Tkwindow.title('Chatbox')window['bg']='#242424'window['padx']=10window['pady']=10#Adding Elements#Entrytxt = tkinter.Entry(window)txt['width']=50txt['relief']=tkinter.GROOVEtxt['bg']='#f5f6f7'txt['fg']='red'txt['font']=("Courier",12)txt.grid(column=0,row=1,padx=5,pady=15)#Buttonsend = tkinter.Button(window,text="Send")send['relief']=tkinter.GROOVEsend['bg']='red'send['fg']='white'send['activebackground']='#404040'send['padx']=3send['font']=("Courier",10)send.grid(column=1,row=1,padx=5,pady=15)_thread.start_new_thread(socketCreation, )window.mainloop
总结
上述给出了主要代码,本文的讲解可以帮助你理解代码的工作方式。最后,请严格执行文本的步骤,以防止运行程序时发生不必要的麻烦。感谢您的阅读!
原文:https://thecodezine.com/5-easy-way-to-build-a-python-chat-room/
本文为 CSDN 翻译,转载请注明来源出处。
Mate40 成麒麟绝唱,光刻机进厂即遭抵押,北斗指路能否解除“芯痛”?
点分享
相关推荐
- windows11办公软件(windows11的office)
-
1、首先点击电脑底部的Windows图标2、进入开始页面点击office套件中的任意应用,如Word3、页面弹出登录按钮,和创建按钮,如已有账号,点击登录4、接着进入激活office页面,输入offi...
-
- 7z文件怎么打开(7z文件改什么后缀才能打开)
-
7z是一种压缩格式,和我们在Windows平台上看到的rar类似;7z原本是7-zip开源的压缩文件所支持的压缩格式,目前大多数压缩软件也支持打开,如若安装了第三方压缩软件双击即可打开7z。7z文件的打开方式介绍如下: 1、扩展名为...
-
2025-11-18 02:03 off999
- 重装系统后连不上网(重装系统后无法连网)
-
1、首先,在安装系统完成之后,界面右下角网络连接显示不可用?我们需要通过,系统本身自带的诊断系统进行诊断,以避免是否是物理原因造成的网络不能正常链接。2、其次,检测结果如果是显示的未能安装网络适配器,...
- 破解wifi密码有什么办法(破解wifi密码有什么办法幻影)
-
破解路由器admin管理员密码方法:只能间接的破解。 方法一、1、打开浏览器---输入192.168.1.1(一般路由器地址是这个或者查看路由器背面的登录信息)进路由---输入用户名,密码...
- 电脑截屏如何截屏(电脑截屏截屏用哪个键)
-
1、直接点击键盘上的PrtScSysRq,即可截图,然后直接在聊天框或者图画中“Ctrl+V”粘贴就行了。2、登录QQ以后,点击快捷键“Ctrl+Alt+A”即可截图,框选过后,直接“...
- 迅捷路由器登录(yr1900g路由器登录入口)
-
入口如下:1.打开网页后输入192.168.1.1或tplogin.cn。2.第一次登录路由器或恢复出厂设置后再次设置,按提示设置好管理员密码、上网参数、wifi名称和密码。3.再次进入登录页面中,输...
- pdf格式怎么编辑(怎么创建pdf格式的文件)
-
1、电脑打开PDF文件。2、电脑打开PDF文件后,点击工具栏中的编辑。3、进入编辑页面后,可以点击文字,对pdf文件进行编辑。4、点击裁剪页面选项,就可以对PDF文件中的页面大小进行裁剪。5、PDF文...
- 电脑显示器不亮(电脑显示器不亮了)
-
多种原因:1、检查电脑主机与显示器之间的连接是否松动、损坏,显示器是否正常。2、这是最常见的故障,内存条接触不良导致显示器无信号。解决办法:断电/拔出内存条,用橡皮擦将金手指擦亮再装回去即可。3、显卡...
- 电脑频繁总自动关机(电脑经常性自动关机)
-
电脑总是自动关机原因如下 1、原因一:设置的问题 有的用户会在电脑上安装管家类软件,这些软件里会有一些设置预定时间关机的功能,比如设置为17:00关机,那么到了下午5点后它就会自动关机,一般检查一...
- 邮箱注册百度账号(邮箱注册百度帐号)
-
要使用邮箱注册天翼云盘,首先需要打开天翼云盘的官方网站。在注册页面中,选择使用邮箱注册并输入您的邮箱地址。然后,按照提示填写您的个人信息,包括用户名、密码等等。最后,点击注册按钮,等待验证邮件的发送。...
- 台式电脑截屏键快捷方式(台式电脑的截图快捷键在哪)
-
方法/步骤1第一个办法自然是我们最常见最简单的,使用“PrintScreen”键截图了。点击“PrintScreen”键,我们就可以直接截取全部屏幕,找个对话框或者文字区域粘贴就好了。我截的图是这样的...
- cad2014密钥001f1不对(cad2014密钥001f1无效)
-
Excel中序号要想输成001,我们可以进行如下的操作,我们先将所有输入序号的这一列全部选定,也就是点击英文字母这一列就可以全部选定了,然后我们在这个选定的区域的状拍下去,点击鼠标右键,再点击数值,再...
- xp强行删除管理员开机密码(windowsxp强行删除开机密码)
-
要清除WindowsXP开机密码,首先需要进入安全模式,然后进入控制面板,选择用户账户设置,再选择删除密码或更改密码选项,输入当前密码,然后将密码字段留空即可清除密码。如果忘记了密码,可以使用软件工...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
