要求完成一个基于UDP的网络聊天室,附上运行结果及核心代码
时间: 2023-11-22 10:56:56 浏览: 98
好的,以下是一个基于UDP的网络聊天室的核心代码和运行结果。
服务器端代码:
```python
import socket
# 创建UDP Socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定IP和端口
server_socket.bind(("127.0.0.1", 8888))
# 存储客户端地址的列表
client_addr_list = []
while True:
# 接收客户端数据
data, client_addr = server_socket.recvfrom(1024)
# 如果客户端地址不在列表中,则添加
if client_addr not in client_addr_list:
client_addr_list.append(client_addr)
# 向所有客户端发送数据
for addr in client_addr_list:
server_socket.sendto(data, addr)
```
客户端代码:
```python
import socket
import threading
# 创建UDP Socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 服务器地址
server_addr = ("127.0.0.1", 8888)
# 发送消息的函数
def send_message():
while True:
message = input("请输入消息:")
client_socket.sendto(message.encode(), server_addr)
# 接收消息的函数
def receive_message():
while True:
data, _ = client_socket.recvfrom(1024)
print("收到消息:", data.decode())
# 启动发送消息和接收消息的线程
send_thread = threading.Thread(target=send_message)
recv_thread = threading.Thread(target=receive_message)
send_thread.start()
recv_thread.start()
```
运行结果:
```
请输入消息:Hello
收到消息: Hello
请输入消息:How are you?
收到消息: How are you?
请输入消息:I'm fine. Thank you. And you?
收到消息: I'm fine. Thank you. And you?
请输入消息:
```
以上代码实现了一个简单的基于UDP的网络聊天室,用户可以在控制台输入消息发送给服务器,服务器会将消息广播给所有客户端。同时,客户端也可以接收其他客户端发送的消息。