socket+threading实现python多人局域网聊天室

使用socket和threading库,构建了一个支持多人聊天的局域网应用。服务端负责接收和广播消息,客户端则用于发送和接收聊天内容。
摘要由CSDN通过智能技术生成

socket+threading实现python多人局域网聊天室

服务端

import socket
import threading

"""
设计思路:
1.每连接一个客户,创建一个线程
2.每个线程单独接收一个客户的信息,并向所有连接的客户发送接受到的信息
3.这样就可以实现聊天室的功能
"""


# 设置服务端
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 本机IP地址
IP = '************'
# 设置端口号
port = 12345
# 绑定主机名和端口
server.bind((IP,port))
server.listen(1000)

# 用来记录聊天室内的客户
# 使用集合,确保集合里的元素唯一
customers = set()

# 向所有用户发送信息
def send_all(data,address):
    global customers
    try:
        for customer in customers:
            customer.send(data)
    except(ConnectionResetError)
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现一个多人聊天室需要涉及到网络编程以及并发编程。在Python中,可以通过TCP协议来实现多人聊天室。 下面是一个跨主机的Python+TCP实现多人聊天室的简单示例代码: ```python import socket import threading # 服务器IP地址和端口号 SERVER_HOST = '0.0.0.0' SERVER_PORT = 8000 # 客户端列表 clients = [] def broadcast(message): """ 广播消息给所有客户端 """ for client in clients: client.send(message) def handle_client(client): """ 处理客户端连接 """ while True: try: message = client.recv(1024) if message: print(f"[{client.getpeername()}]: {message.decode('utf-8')}") message_to_broadcast = f"[{client.getpeername()}]: {message.decode('utf-8')}".encode('utf-8') broadcast(message_to_broadcast) else: remove(client) except: remove(client) def remove(client): """ 客户端断开连接 """ if client in clients: clients.remove(client) client.close() if __name__ == "__main__": # 创建服务器套接字 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() print(f"[*] Listening on {SERVER_HOST}:{SERVER_PORT}") while True: client_socket, client_address = server_socket.accept() print(f"[*] Accepted connection from {client_address[0]}:{client_address[1]}") clients.append(client_socket) client_thread = threading.Thread(target=handle_client, args=(client_socket,)) client_thread.start() ``` 在上述代码中,我们使用了Pythonsocket模块来创建TCP服务器和客户端套接字,使用了Pythonthreading模块来进行并发处理。我们定义了一个`broadcast`函数来广播消息给所有客户端,定义了一个`handle_client`函数来处理客户端连接,定义了一个`remove`函数来处理客户端断开连接。 在`handle_client`函数中,我们使用了一个死循环来持续处理客户端发送的消息。当接收到消息时,我们使用`broadcast`函数将该消息广播给所有客户端。当客户端断开连接时,我们使用`remove`函数将该客户端从客户端列表中移除。 在`__main__`函数中,我们创建服务器套接字,监听客户端连接。当有新的客户端连接时,我们将其添加到客户端列表中,并使用一个新的线程来处理该客户端连接。 这是一个简单的跨主机Python+TCP实现多人聊天室的示例代码,你可以在此基础上进行扩展和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值