在本文中,我们来谈一谈如何构建一个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 _thread
import socket
import 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 & Port
host="127.0.0.1"
port=5000
s.bind((host,port))
s.listen(5)
clients=[]
#code to allow users to send messages
def 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 Part
import tkinter
import socket
import _thread
import sys# Code to create a new client socket  and connect to the serveri = 3
client = 0
start = True
def sendMessage ():msg = txt.get()client.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 Creation
def 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 window
window = tkinter.Tk()
window.title('Chatbox')
window['bg']='#242424'window['padx']=10
window['pady']=10
#Adding Elements
#Entry
txt = tkinter.Entry(window)
txt['width']=50
txt['relief']=tkinter.GROOVE
txt['bg']='#f5f6f7'
txt['fg']='red'
txt['font']=("Courier",12)
txt.grid(column=0,row=1,padx=5,pady=15)
#Button
send = tkinter.Button(window,text="Send")
send['relief']=tkinter.GROOVE
send['bg']='red'
send['fg']='white'
send['activebackground']='#404040'
send['padx']=3
send['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项重大发布!百度大脑语言与知识技术峰会全程高能
☞我把这篇文章给女朋友看,她终于明白什么是「数据中台」了
☞七夕恋爱指南:理性算计与不可篡改的爱
点分享点点赞点在看

只需五步,快速构建Python聊天室相关推荐

  1. 只需两步快速获取微信小程序源码

    第一次在掘金这样高大上的社区写文章,忐忑地敲下我获取小程序源码过程中的经验分享. 最近在学习微信小程序开发,半个月学习下来,很想实战一下踩踩坑,于是就仿写了某个小程序的前端实现,过程一言难尽,差不多两 ...

  2. 网站优化只需五步技巧分享推广无界限

    目前很多企业或者个人的网站都已经很普遍使用了,但是一个网站有好的排名和流量就必须要有好的优化,并且网站自身的关键词优化布局也是非常重要的,不过网站优化一般只需五步就可以达到效果,这五步你都知道吗? 我 ...

  3. 只需五步学会Maven 3.6.1OR 3.6.3及其他版本的下载安装与配置【图文详解】

    第一步,下载并解压缩包 ​第二步,配置两个环境变量 ​第三步,测试是否安装成功 ​第四步,指定本地仓库的路径 第五步,修改镜像仓库 第一步,下载并解压缩包 Maven官方下载地址:https://ma ...

  4. php to es7,只需五步 集成新版 Elasticsearch7.9 中文搜索 到你的 Laravel7 项目

    只需五步骤: 启动 集成 ik 中文分词插件的 Elasticsearch7.9 Docker 镜像 Laravel7 配置 Scout 配置 Model 模型 导入数据 搜索 PHP进阶30K资料, ...

  5. 【RPA之家转载】只需一步快速合并几百个Excel文件

    你遇到过要把几百个excel的数据合并起来的需求吗? 最简单的方法:用alteryx,只需一步,就可以轻松做到这一点,如下图1: 拖拽一个读取工具(Input Data,我用的是英文版,这个软件有中文 ...

  6. 只需五步!哈佛学霸教你用Python分析相亲网站数据,在两万异性中找到真爱

    大数据文摘出品 来源:Wired 编译:啤酒泡泡.张大笔茹.张睿毅.牛婉杨 想脱单?那还不容易! 如果身在美国,就像其余四千万单身男人一样,注册一下Match.com, J-Date和OkCupid等 ...

  7. cad批量打印_还为批量打印CAD图纸而发愁?只需五步,3秒打印百张图纸!

    还有将近两个星期就要过年! 是不是很期待!很兴奋呢? 你以为我要和你说过年?大错特错,今天要和大家聊一聊,过年之前工作上的那些事! 都知道CAD绘图设计,是一个每天知道要进行CAD格式转换不下10遍的 ...

  8. 点击复制内容到手机粘贴板(简洁易懂-只需五步)

    点击按钮复制内容到手机粘贴板 只需简单五步↓ 第一步 npm install clipboard --save 第二步 在需要的页面引入(注:路径根据文件-/) 代码如下↓ <script> ...

  9. (只需五步)ChatGPT接入微信的攻略

    先来看下用弱智问题对战ChatGPT的效果: 再看看程序代码能力: 你也可以用它来写作业学习: 接下来,就是把ChatGPT接入微信的教程: 一共五步,很简单的: 1.进入openAI api 官网登 ...

最新文章

  1. 彩蛋还是陷阱?我所经历的期权往事
  2. PPT文字怎样规划 哪里可以代做PPT
  3. .net页面数据传递
  4. 做运营,你需要“一张画布绘到底”
  5. MySQL之mysql客户端工作的批处理一些使用手法
  6. ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线
  7. Java Bootstrap:Dropwizard与Spring Boot
  8. 窗体跳转与传值 02
  9. android 常用短语的添加,操作方法:使用Android上的百度输入法提供的导入词库和个性化短语,批量创建单词便于输入...
  10. 【2021-01-14】navicat使用ssh tunnel、密钥方式连接数据库的问题。错误:Unable to load key - unrecognised cipher name
  11. 解放原画师!Wav2Lip 用 AI 听音同步人物口型
  12. PowerVim - 强大的vim配置
  13. android surfaceview view 区别
  14. 数模论文格式小技巧(符号说明三线表)
  15. php array =%3e变,https ipcrs.pbccrc.org.cn php的json和数组转换
  16. ASTER GDEM v3.0高程数据批量下载
  17. 计算机导论期末自测题,计算机导论期末习题da
  18. Volar - vue终极开发神器!
  19. 激光雷达和相机的联合标定(Camera-LiDAR Calibration)
  20. 京都计算机学院放假时间表,2019全年放假时间表

热门文章

  1. GTK+图形化应用程序开发学习笔记(四)—容器、构件
  2. sql server 2012中red gate的sql source control消失
  3. OSI七层模型详解 TCP/IP协议
  4. docker 实战---使用oracle xe作为开发数据库(六)
  5. Docker下部署wordpress
  6. 幸福就是有人爱、有事做、有所期待(转)
  7. SQLServer 2008 已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 - 等待的操作过时。...
  8. 分析日志下载时间脚本
  9. Postresql初始安装后用户的创建
  10. Numpy np.random.RandomState()的简单用法