技术文摘
Python 系列:打造摸鱼神器之 Python 聊天室创建
2024-12-30 18:32:59 小编
Python 系列:打造摸鱼神器之 Python 聊天室创建
在繁忙的工作或学习中,偶尔摸鱼放松一下是人之常情。今天,我们将利用 Python 来创建一个简单而有趣的聊天室,让您在摸鱼时刻也能享受与朋友交流的乐趣。
我们需要导入一些必要的模块。socket模块用于网络通信,threading模块用于多线程处理。
import socket
import threading
接下来,定义服务器端的代码。我们需要指定服务器的主机和端口,并创建一个套接字对象来监听连接请求。
HOST = '127.0.0.1'
PORT = 5000
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen(5)
然后,我们创建一个函数来处理每个客户端的连接。在这个函数中,我们接收客户端发送的消息,并将其广播给所有连接的客户端。
def handle_client(client_socket):
while True:
message = client_socket.recv(1024).decode('utf-8')
if message:
for client in clients:
client.send(message.encode('utf-8'))
在服务器的主循环中,我们等待客户端的连接,并为每个连接创建一个新的线程来处理通信。
clients = []
while True:
client_socket, addr = server_socket.accept()
clients.append(client_socket)
threading.Thread(target=handle_client, args=(client_socket,)).start()
接下来是客户端的代码。客户端首先连接到服务器,然后创建一个线程来接收服务器发送的消息,并在主线程中等待用户输入消息并发送给服务器。
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((HOST, PORT))
def receive_messages():
while True:
message = client_socket.recv(1024).decode('utf-8')
if message:
print(message)
threading.Thread(target=receive_messages).start()
while True:
message = input("输入您的消息: ")
client_socket.send(message.encode('utf-8'))
通过以上代码,我们就成功创建了一个简单的 Python 聊天室。您可以与朋友在不同的终端或计算机上运行客户端代码,然后愉快地交流摸鱼心得啦!
无论是在工作间隙与同事分享轻松时刻,还是在学习之余与同学闲聊解压,这个 Python 聊天室都能为您带来别样的摸鱼体验。快来试试吧!
- Vue中优雅获取插槽内元素Ref的方法
- Perspective属性是否必须放置在transform-style: preserve-3d元素的父级元素上
- JavaScript实现History路由及Vue Router在jQuery项目中实现页面切换方法
- 在 Vite 项目中怎样将 Vue 3.2 升级到 Vue 3.4
- 实现可折叠展开的JSON可视化方法
- Vue3.0 项目中集成百度地图与外部库的方法
- 移动端横版页面适配:怎样解决 CSS 旋转引发的样式兼容性问题
- VuePress 文档里怎样用 Markdown 链接跳转至其他章节
- 怎样消除渐变刻度里的锯齿
- 怎样让子元素绝对高度与父元素可滚动内容高度一致
- 深入剖析 CSS 大小单位:px、em、rem、% 等
- VuePress中实现内容跳转的方法
- 点击事件中如何获取选中菜单项的信息
- ElementUI 中怎样借助 ref 属性访问子组件实例并调用其方法
- perspective属性设置于父元素与后代元素时 3D 效果的差异