Python多用户udp网络聊天室代码
时间: 2023-12-29 20:02:25 浏览: 102
以下是一个简单的Python多用户UDP网络聊天室代码:
```python
import socket
import threading
# 定义UDP服务器IP和端口
SERVER_IP = '127.0.0.1'
SERVER_PORT = 8888
# 创建UDP服务器socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind((SERVER_IP, SERVER_PORT))
# 定义客户端列表,用于保存所有连接到服务器的客户端信息
client_list = []
# 定义函数用于处理客户端连接请求
def handle_client():
while True:
# 接收客户端数据
data, addr = server_socket.recvfrom(1024)
# 解析客户端数据
client_data = data.decode('utf-8')
client_name, client_message = client_data.split('|')
# 将客户端信息保存到客户端列表中
if addr not in [client[1] for client in client_list]:
client_list.append((client_name, addr))
# 将客户端发送的消息转发给所有其他客户端
for client in client_list:
if client[1] != addr:
server_socket.sendto(client_data.encode('utf-8'), client[1])
# 定义函数用于处理用户输入的消息
def handle_user_input():
while True:
# 获取用户输入
user_input = input()
# 将用户输入转发给所有客户端
for client in client_list:
server_socket.sendto(('Server|' + user_input).encode('utf-8'), client[1])
# 创建线程分别处理客户端连接请求和用户输入
client_thread = threading.Thread(target=handle_client)
user_thread = threading.Thread(target=handle_user_input)
client_thread.start()
user_thread.start()
```
在这个聊天室中,当一个客户端连接到服务器时,服务器将其加入到客户端列表中,并将其发送的消息转发给所有其他客户端。当一个用户在服务器的命令行界面中输入消息时,服务器将其转发给所有客户端。
请注意,这个简单的聊天室代码没有任何的安全措施,如身份验证或加密,因此只适合用于本地测试或内部网络。在实际应用中,应该加入更多的安全措施来保护客户端和服务器的数据安全。
阅读全文