只需五步,快速构建Python聊天室(python制作聊天软件)
off999 2024-11-15 23:07 24 浏览 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 成麒麟绝唱,光刻机进厂即遭抵押,北斗指路能否解除“芯痛”?
点分享
相关推荐
- 会员管理软件(美发店会员管理软件)
-
洗车店会员卡管理软件,用电子会员版的好些,客户只需要带上手机,关注微信公众号,登记手机号,就可以查询到会员充值信息、消费信息、卡内余额或项目等信息。还可以发送消费短信,告知客户余额或剩余套餐卡项目,会...
- 世界杯2025赛程表(u23世界杯2025赛程表)
-
2022年卡塔尔世界杯(英语:TheFIFAWorldCup-Qatar2022)是第二十二届世界杯足球赛,是历史上首次在卡塔尔和中东国家境内举行、也是继2002年韩日世界杯之后时隔二十年...
- player安卓版下载(finalswfplayer安卓版下载)
-
使用手机直接下载,那就是在手机iTunes里面搜索下载歌曲,然后就会自动添加到音乐软件程序里面去。使用电脑同步,就是在电脑上面下载安装iTunes,然后把歌曲加载到电脑版iTunes音乐资料库里面,然...
-
- 360浏览器官方网站(360浏览器-影视新闻资讯小说浏览)
-
360极速浏览器的入口是http://chrome.360.cn/360极速浏览器(360chrome)无缝融合双核引擎,采用了最快速的Chromium内核及兼容性最好的IE内核,360极速浏览器简洁人性化的设计,更好用,360极速浏览器囊...
-
2026-01-16 18:15 off999
- 不受限制的万能浏览器手机版
-
在万能浏览器里面,UC浏览器是最好用的。UC浏览器是阿里巴巴旗下的一个浏览器,它整体上给人的感觉是非常友好而且非常流畅,关键的是它很少有广告,同时呢也不会劫持别人的这个浏览器,而且他这个视频看起来非...
-
- 下载安装qq浏览器(下载安装QQ浏览器)
-
若手机不能下载软件,建议您:1.查看软件下载说明,是否对软件安装平台、手机系统版本等有要求。2.检查下载的软件格式是否正确:安卓系统手机支持的软件格式为.APK。3.检查手机内存是否已满,打开手机设定-存储-可用空间。4.查看下载的...
-
2026-01-16 17:43 off999
- 目前最好用的网络电话(哪款网络电话好用)
-
好用的网络电话软件有爱科手机网络电话软件、阿里通网络电话、skype网络电话、有信、爱聊。1、爱科手机网络电话软件:爱科可以在手机上打网络电话。是一款开放式网络通信软件,融合免费网络电话、免费短信、网...
- 免费听歌大全(免费听歌大全蒙古歌曲)
-
答案是,我推荐你去下一个青桃app听歌软件比较好,哪里有海量的免费音乐可以任意随听,免费下载都可以,而且音质都很不错!有许多软件能够免费听歌,以下是一些常见的免费听歌软件:1.Spotify:Spo...
- 58同城二手车交易网(58同城二手车交易网官网)
-
58同城上的二手车可以买,有靠谱的,也有不靠谱的。58同城上有真实车主,但更多的是冒充车主的车商,关键取决于消费者的辨别能力。如果是不懂行的个人想买辆靠谱二手车的话,最简单快速的办法还是找个规模大的、...
- 安卓浏览器(安卓浏览器在哪里打开)
-
安卓浏览器简单的说就是在安卓手机上使用的浏览器,稍微复杂点就是基于liunx开发的apk程序用于搜索浏览解析文件的一个软件。遵循万维网的HTTP和FTP协议编译网络共享的数据通过搜索引擎转变为我们通常...
- 海马苹果助手下载官网(海马苹果助手在线下载)
-
1.当然有用了,推荐海马苹果助手,算是目前国内运行最稳定,性能最佳的一款苹果助手了2.海马玩手机助手还行,功能比较强大,体验很好,无需账户注册,可以直接免费正版应用软件下载安装3.目前比较好用的手机助...
- 租房子58同城(建湖租房子58同城)
-
自建房也可以在58同城网发布房租出租信息。首先,你要注册58同城网的账号,就可以发布房屋出租信息。填写的时候填写自有房产“我是房东”,详细填写房租的基本情况,交通情况,对租客的要求等信息,就可以发布了...
- qq游戏大厅2025(QQ游戏大厅2025绿色版)
-
1.可以直接在漫展官方APP中进行购买门票。2.直接去漫展厅购买门票。3.有漫展代购者进行售卖门票,可以去进行购买。而这三种方式是购买漫展门票最快,最安全的购买方式。2023年cm漫展郑州市市区门票可...
- 看球直播app下载(看球帝app手机版免费下载)
-
电视直播ios版是一款连接了电视网为您提供电视直播信号的手机直播应用。无论是央视各台还是全国各大卫视都可以在这里免费收看,周五看浙江卫视《中国新歌声》,周六看湖南卫视《快乐大本营》,周末看东方卫视《极...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
Python 批量卸载关联包 pip-autoremove
-
- 最近发表
- 标签列表
-
- 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)
