欢迎访问宙启技术站
智能推送

Python中使用server()函数实现TCP/IP协议的简单聊天室程序

发布时间:2023-12-18 18:51:57

在Python中,可以使用socket模块的server()函数来实现一个简单的TCP/IP协议的聊天室程序。该函数用于创建一个服务器套接字,并监听指定的主机和端口。下面是一个使用server()函数实现的简单聊天室程序的例子:

import socket
import threading

def handle_client(client_socket, addr):
    while True:
        # 接收客户端发送的消息
        data = client_socket.recv(1024)
        if not data:
            # 客户端断开连接
            print(f"Client {addr} disconnected")
            break
        else:
            # 将消息广播给所有客户端
            broadcast(data)

def broadcast(message):
    for client in clients:
        client.send(message)

def start_server():
    # 创建服务器套接字
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind(('localhost', 8888))
    server_socket.listen(5)
    print("Server started. Listening on port 8888...")

    while True:
        # 等待客户端连接
        client_socket, addr = server_socket.accept()
        print(f"Client {addr} connected")

        # 处理客户端连接的线程
        client_thread = threading.Thread(target=handle_client, args=(client_socket, addr))
        client_thread.start()

        # 保存客户端套接字到列表中
        clients.append(client_socket)

clients = []

if __name__ == "__main__":
    start_server()

在上述例子中,首先定义了一个handle_client()函数,用于处理客户端连接。在该函数中,通过recv()函数接收客户端发送的消息,并通过broadcast()函数将消息广播给所有客户端。如果客户端断开连接,则退出循环。

接下来,定义了一个broadcast()函数,用于将接收到的消息广播给所有客户端。这里使用了一个列表clients来保存所有的客户端套接字。

最后,定义了一个start_server()函数,用于创建服务器套接字并监听指定的主机和端口。在循环中,使用accept()函数等待客户端连接,并创建一个线程来处理每个客户端的连接。客户端连接的处理逻辑由handle_client()函数实现。

在主程序中,调用start_server()函数启动聊天室服务器。可以在多个终端中运行客户端程序,与服务器建立连接后,输入消息即可在所有客户端之间进行广播。