You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python UDP Socket在Windows下无法接收响应的问题求助

UDP客户端在Windows下无法接收延迟响应的问题

服务端代码

以下是模拟处理请求耗时240秒后返回"OK"的UDP服务端代码:

import socket
import time

# 创建UDP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 绑定IP和端口
server_address = ('192.168.100.2', 9910)
server_socket.bind(server_address)

print('服务器已启动运行!')

while True:
    # 接收客户端数据
    data, client_address = server_socket.recvfrom(1024)
    
    # 处理接收的数据
    message = data.decode()
    print('收到客户端消息:', message)
    time.sleep(240)  # 模拟处理耗时
    # 向客户端发送响应
    response = 'OK'
    server_socket.sendto(response.encode(), client_address)
    print(f"已向 {client_address} 发送响应: {response}")

客户端实现与问题

方式一:直接收发

设置300秒超时以适配服务器240秒的响应延迟:

import socket

# 创建UDP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client_socket.settimeout(300)
# 服务器地址
server_address = ('192.168.100.2', 9910)

# 向服务器发送数据
message = '来自客户端的问候!'
client_socket.sendto(message.encode(), server_address)

# 接收服务器响应
response, _ = client_socket.recvfrom(1024)

# 处理响应
response_message = response.decode()
print('收到服务器响应:', response_message)

# 关闭套接字
client_socket.close()

方式二:循环接收

尝试通过循环+短超时的方式接收响应:

import logging
_log = logging.getLogger(__name__)

command_to_be_send = "flashIntel"

client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

client_socket.settimeout(20)
_log.info(f"通过UDP向设备发送命令: [{command_to_be_send}]")
client_socket.sendto(command_to_be_send.encode(), ("192.168.100.2", 9910))

while True:
    response = None
    try:
        response, addr = client_socket.recvfrom(1024)
    except Exception as e:
        _log.info(e)
        pass
    if response:
        break

response_text = response.decode().strip()
_log.info(f"从 [{addr}] 收到响应: [{response_text}]")

client_socket.close()

问题现象

  • Linux环境:两种客户端实现均正常工作,服务器240秒后返回的"OK"能被成功接收。
  • Windows环境:两种客户端都无法获取UDP响应,最终触发超时。但通过WireShark抓包可以确认,服务器返回的数据包已经到达客户端机器,只是代码无法读取到。

内容的提问来源于stack exchange,提问作者Hristiyan Andreev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:16:25