以下是一个简单的C/S架构的多人聊天室的服务器端和客户端的实现示例:

服务器端:

import socket
import threading

# 用于存储连接到服务器的客户端
clients = []

def handle_client(client):
    while True:
        try:
            # 接收客户端发送的消息
            message = client.recv(1024).decode('utf-8')
            if message:
                # 广播消息给所有客户端
                broadcast(message)
            else:
                # 如果接收到空消息,表示客户端断开连接
                remove(client)
        except:
            # 发生异常时,表示客户端断开连接
            remove(client)
            break

def broadcast(message):
    # 将消息广播给所有客户端
    for client in clients:
        client.send(message.encode('utf-8'))

def remove(client):
    # 移除断开连接的客户端
    if client in clients:
        clients.remove(client)

def start_server():
    # 创建服务器Socket
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind(('localhost', 8888))
    server.listen(5)
    print('服务器已启动,等待客户端连接...')

    while True:
        # 接受客户端连接
        client, addr = server.accept()
        clients.append(client)
        print('客户端已连接:', addr)

        # 创建线程处理客户端消息
        threading.Thread(target=handle_client, args=(client,)).start()

start_server()

客户端:

import socket
import threading

def receive_messages(sock):
    while True:
        try:
            # 接收服务器发送的消息
            message = sock.recv(1024).decode('utf-8')
            print(message)
        except:
            # 发生异常时,表示服务器断开连接
            print('与服务器断开连接')
            sock.close()
            break

def start_client():
    # 创建客户端Socket
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(('localhost', 8888))
    print('已连接到服务器')

    # 创建线程接收服务器消息
    threading.Thread(target=receive_messages, args=(client,)).start()

    while True:
        # 发送消息给服务器
        message = input()
        client.send(message.encode('utf-8'))

start_client()

运行以上代码,可以启动一个多人聊天室。客户端可以通过输入消息发送给服务器,并接收服务器广播的消息。服务器端可以显示连接到服务器的用户。客户端可以通过输入消息发送给服务器,并接收服务器广播的消息

编写一cs架构关于简单的多人聊天室的服务器端和客户端的实现包含1用户可以查看收到的信息。2用户可以群发信息和私发信息。3服务器端可以显示登入的用户

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

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