PythonUDP双向通信
时间: 2024-12-26 18:15:32 浏览: 11
### Python 中基于 UDP 协议的双向通信
UDP 是一种无连接的传输层协议,提供不可靠的数据报服务。由于其轻量级特性,在某些应用场景下非常有用。为了实现在 Python 中基于 UDP 的双向通信,可以通过创建两个套接字来分别处理发送和接收数据。
#### 创建服务器端代码
服务器端负责监听来自客户端的消息并作出响应:
```python
import socket
def udp_server(host='127.0.0.1', port=9999):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = (host, port)
try:
sock.bind(server_address)
print(f'Server started on {server_address}')
while True:
data, address = sock.recvfrom(4096) # 接收消息
message = data.decode('utf-8')
print(f'Received from client [{address}]: {message}')
response_message = f'Echo: {message}'
sent = sock.sendto(response_message.encode(), address) # 发送回执
finally:
sock.close()
if __name__ == '__main__':
udp_server()
```
此段代码定义了一个简单的 UDP 服务器[^2],它会持续等待直到收到一条消息,之后将这条消息作为回应返回给发送者。
#### 客户端代码实现
客户端用于向指定地址发送请求,并准备接受可能到来的服务端回复:
```python
import socket
def udp_client(server_ip='127.0.0.1', server_port=9999):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
user_input = input("Enter your message:")
sent = sock.sendto(user_input.encode(), (server_ip, server_port)) # 向服务器发送消息
data, _ = sock.recvfrom(4096) # 接受服务器反馈
received_message = data.decode('utf-8')
print(f'Response from Server:{received_message}')
finally:
sock.close()
if __name__ == '__main__':
udp_client()
```
这段程序展示了如何构建一个基本的 UDP 客户端,它可以输入自定义的信息到标准输出流中,然后通过网络将其传递至远程主机上的特定端口;与此同时也能读取由该目标位置发来的任何应答信息。
阅读全文