以下是一个简单的多人聊天室代码,使用Python的socket和threading模块实现:

import socket
import threading

# 设置服务器 IP 地址和端口号
SERVER_HOST = '0.0.0.0'
SERVER_PORT = 8000

# 创建一个 TCP 服务器 socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# 绑定服务器地址和端口
server_socket.bind((SERVER_HOST, SERVER_PORT))

# 开始监听连接请求
server_socket.listen(5)
print(f"[*] Listening on {SERVER_HOST}:{SERVER_PORT}")

# 客户端处理函数
def handle_client(client_socket, client_address):
    print(f"[+] Accepted connection from {client_address[0]}:{client_address[1]}")

    while True:
        # 接收客户端消息
        msg = client_socket.recv(1024).decode('utf-8')
        if not msg:
            break

        # 将消息广播给所有客户端
        broadcast_msg = f"{client_address[0]}:{client_address[1]} > {msg}"
        print(broadcast_msg)
        for client in clients:
            client.sendall(broadcast_msg.encode('utf-8'))

    # 关闭客户端连接
    client_socket.close()
    print(f"[-] Connection from {client_address[0]}:{client_address[1]} closed")

# 存储所有客户端 socket 的列表
clients = []

while True:
    # 接受客户端连接
    client_socket, client_address = server_socket.accept()

    # 将新连接的客户端 socket 添加到列表中
    clients.append(client_socket)

    # 创建一个新的线程处理客户端请求
    client_thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
    client_thread.start()

运行以上代码后,可以在终端输入nc localhost 8000连接到聊天室,然后在多个终端同时连接,就可以进行多人聊天了

用Python写一段多人聊天室的的代码

原文地址: https://www.cveoy.top/t/topic/eAzf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录