udp接受_基于python+udp实现多人聊天室
时间: 2024-02-05 21:05:20 浏览: 101
基于UDP协议开发的即时聊天室python源码(含客户端+服务端).zip
实现一个基于 Python 和 UDP 的多人聊天室可以分为以下几个步骤:
1. 创建一个 UDP socket 对象,并绑定到一个 IP 地址和端口号上,以便监听客户端的请求。
```python
import socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind(('localhost', 8888))
```
2. 接收来自客户端的数据,并将其广播给所有连接的客户端。
```python
while True:
data, addr = udp_socket.recvfrom(1024) # 接收数据
print(f"Received message: {data.decode()} from {addr}")
for client_addr in client_addrs: # 广播数据给所有客户端
udp_socket.sendto(data, client_addr)
```
3. 记录每个连接到服务器的客户端的 IP 地址和端口号,并将其存储在一个列表中。
```python
client_addrs = []
while True:
data, addr = udp_socket.recvfrom(1024) # 接收数据
if addr not in client_addrs:
client_addrs.append(addr) # 记录客户端地址
print(f"Received message: {data.decode()} from {addr}")
for client_addr in client_addrs: # 广播数据给所有客户端
udp_socket.sendto(data, client_addr)
```
4. 向服务器发送数据的客户端需要指定服务器的 IP 地址和端口号。
```python
import socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_addr = ('localhost', 8888)
udp_socket.sendto("Hello, server!".encode(), server_addr)
```
完整的代码示例:
server.py
```python
import socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind(('localhost', 8888))
client_addrs = []
while True:
data, addr = udp_socket.recvfrom(1024) # 接收数据
if addr not in client_addrs:
client_addrs.append(addr) # 记录客户端地址
print(f"Received message: {data.decode()} from {addr}")
for client_addr in client_addrs: # 广播数据给所有客户端
udp_socket.sendto(data, client_addr)
```
client.py
```python
import socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_addr = ('localhost', 8888)
udp_socket.sendto("Hello, server!".encode(), server_addr)
while True:
message = input("Enter message to send: ")
udp_socket.sendto(message.encode(), server_addr)
```
可以启动多个客户端运行 client.py,然后运行 server.py,即可在不同的客户端之间实现聊天。
阅读全文