只需五步,快速构建Python聊天室

2020 年 8 月 27 日 CSDN

在本文中,我们来谈一谈如何构建一个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 the socket. This is used when we have an Internet Domain with any 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 clients        msg = 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 connects    print('*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 server
i = 3client = 0start = Truedef sendMessage (): msg = txt.get() client.send(msg.encode('ascii'))
def recievingMessage (c): global i while True : msg=c.recv(2048).decode('ascii') if not msg : sys.exit(0) global start if (start) : start = False #tkinter codes starts window.title(msg) continue msglbl = tkinter.Label(window,text=msg) msglbl['font']=("Courier",10) msglbl['bg']='black' msglbl['fg']='#0aff43' msglbl['width']=50 msglbl.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 file host = '127.0.0.1' port = 5000 c.connect((host,port)) global client client = c send['command'] = sendMessage _thread.start_new_thread(recievingMessage, (c,) )

#Creating a windowwindow = tkinter.Tk()window.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 翻译,转载请注明来源出处。



更多精彩推荐

           
           
             
GitHub多次霸榜,两个月拿下10000+Star,他说基础软件不开源必死无疑
Mate40 成麒麟绝唱,光刻机进厂即遭抵押,北斗指路能否解除“芯痛”?
过分了,又双叒叕吃狗粮:因为爱情,才有思科
11项重大发布!百度大脑语言与知识技术峰会全程高能
我把这篇文章给女朋友看,她终于明白什么是「数据中台」了
七夕恋爱指南:理性算计与不可篡改的爱
点分享
点点赞
点在看
登录查看更多
0

相关内容

【2020干货书】Python3基础导论介绍,98页pdf
专知会员服务
99+阅读 · 2020年10月11日
【干货书】用Python构建概率图模型,173页pdf
专知会员服务
111+阅读 · 2020年8月23日
【干货书】Python语音计算导论,408页pdf
专知会员服务
98+阅读 · 2020年7月12日
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
Python导论,476页pdf,现代Python计算
专知会员服务
254+阅读 · 2020年5月17日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
173+阅读 · 2020年1月1日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python 如何快速入门?
全球人工智能
6+阅读 · 2018年3月15日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Python 书单:从入门到……
Linux中国
38+阅读 · 2017年8月6日
Arxiv
7+阅读 · 2019年5月31日
Rapid Customization for Event Extraction
Arxiv
7+阅读 · 2018年9月20日
Arxiv
8+阅读 · 2018年5月15日
Arxiv
6+阅读 · 2018年3月25日
Arxiv
3+阅读 · 2018年3月5日
VIP会员
相关VIP内容
【2020干货书】Python3基础导论介绍,98页pdf
专知会员服务
99+阅读 · 2020年10月11日
【干货书】用Python构建概率图模型,173页pdf
专知会员服务
111+阅读 · 2020年8月23日
【干货书】Python语音计算导论,408页pdf
专知会员服务
98+阅读 · 2020年7月12日
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
Python导论,476页pdf,现代Python计算
专知会员服务
254+阅读 · 2020年5月17日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
173+阅读 · 2020年1月1日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
相关资讯
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python 如何快速入门?
全球人工智能
6+阅读 · 2018年3月15日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Python 书单:从入门到……
Linux中国
38+阅读 · 2017年8月6日
相关论文
Top
微信扫码咨询专知VIP会员