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

Python实现UDP Ping Client时try块未触发仅输出丢包信息问题求助

根因定位

你观察到的「try块未命中」是误判:try块实际已正常执行,只是块内的client_socket.recv(1024)一直触发超时异常,直接跳转至except分支输出丢包,才造成了try块未运行的假象。你可在try块首行加入打印语句验证执行状态。

核心问题分为两类:

1. 服务端代码语法错误

服务端以下代码存在参数类型错误,大概率启动即崩溃,无法正常处理客户端请求:

delay = random.randint(0.0, 2*AVERAGE_DELAY)

random.randint()要求传入两个整数参数,你传入的第一个参数为浮点数0.0,Python3运行时会直接抛出TypeError终止服务端进程,自然无法回包。
修复方案:将0.0改为整数0即可:

delay = random.randint(0, 2*AVERAGE_DELAY)

2. 其他配置/环境问题

  • 启动参数不匹配:客户端传入的服务端IP、端口与服务端实际运行环境不符,例如本地测试时误传公网IP、服务端端口被其他进程占用导致启动失败。
  • 防火墙拦截:系统防火墙拦截了Python进程的UDP通信,导致请求包或回包被丢弃,本地测试可临时关闭防火墙验证。
  • 客户端输出逻辑错误(不影响功能):客户端server_ip = gethostbyname(gethostname())拿到的是客户端本机IP而非服务端IP,日志打印的IP信息有误,建议直接输出传入的sys.argv[1]即可。

验证流程

  1. 先修复服务端参数问题,启动服务端确认无报错输出
  2. 本地测试时客户端启动参数填写127.0.0.1 + 服务端监听端口,例如服务端监听1234端口,则执行python UDPPingerClient.py 127.0.0.1 1234
  3. 正常运行后约70%请求会打印RTT值,30%请求打印丢包提示,符合设定的丢包率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:06:04