如何用python写聊天程序?请给出代。
以下是一个简单的 Python 聊天程序的代码,它使用了 socket 和 threading 模块:
import socket
import threading
# 服务器的 IP 和端口
HOST = '127.0.0.1'
PORT = 8000
# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen()
# 存储所有客户端的连接对象
clients = []
# 处理客户端消息的函数
def handle_client(client_socket, client_address):
print(f'New connection from {client_address}')
clients.append(client_socket)
while True:
# 接收客户端发送的消息
message = client_socket.recv(1024).decode('utf-8')
if message:
print(f'{client_address}: {message}')
# 将消息发送给所有客户端
for client in clients:
if client != client_socket:
client.send(f'{client_address}: {message}'.encode('utf-8'))
else:
# 客户端断开连接时,从列表中移除连接对象
clients.remove(client_socket)
client_socket.close()
print(f'{client_address} disconnected')
break
# 监听客户端连接的函数
def listen_for_clients():
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
# 创建一个新的线程来处理客户端消息
client_thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
client_thread.start()
# 启动服务器
print(f'Server listening on {HOST}:{PORT}')
listen_for_clients()
运行该程序后,可以使用 telnet 工具连接到服务器进行测试:
$ telnet 127.0.0.1 8000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, world!
在另一个终端窗口中,可以再次使用 telnet 连接到服务器,这样就可以在两个客户端之间进行聊天了
原文地址: https://www.cveoy.top/t/topic/evls 著作权归作者所有。请勿转载和采集!