编写UDP程序,通过多路IO复用同时处理标准输入和套接字。当输入为quit时程序结束;当通过套接字收到对方消息时回射给对方
时间: 2024-04-16 14:27:47 浏览: 15
下面是一个简单的UDP程序示例,使用多路IO复用同时处理标准输入和套接字。当输入为"quit"时,程序结束;当通过套接字收到对方消息时,会回射给对方。
```python
import select
import socket
import sys
# 创建UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定本地地址和端口
server_address = ('localhost', 12345)
sock.bind(server_address)
# 添加标准输入到输入列表中
inputs = [sock, sys.stdin]
while True:
readable, _, _ = select.select(inputs, [], [])
for r in readable:
if r == sock:
# 收到对方消息
data, address = sock.recvfrom(1024)
print('Received message:', data.decode())
# 回射消息给对方
sock.sendto(data, address)
elif r == sys.stdin:
# 从标准输入读取内容
message = sys.stdin.readline().strip()
if message == "quit":
# 输入为"quit"时,程序结束
sock.close()
sys.exit(0)
# 发送消息给对方
sock.sendto(message.encode(), server_address)
```
请注意,此代码示例仅提供基本框架,可能需要根据实际需求进行修改和优化。