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

如何修改UDP服务端与客户端,实现多次请求计算平均响应时间

解决方案

服务端原有代码无需做任何修改,其自带的无限循环监听逻辑可以正常处理多次重复请求,仅需调整客户端代码实现多次请求发送、耗时记录与平均值计算即可。

修改后客户端完整代码

import socket
import string
import random
from time import time

def random_string(length, chars=string.ascii_letters + string.digits):
    return ''.join(random.choice(chars) for x in range(length))

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

# 定义请求次数,可按需调整为6
REQUEST_COUNT = 5
# 存储每次请求的响应时间
response_times = []
# 提前生成固定的请求内容,保证每次发送的是同一个请求
input_s = random_string(100)

for index in range(REQUEST_COUNT):
    sent_time = time()
    client_socket.sendto(bytes(input_s, encoding='utf8'), ('127.0.0.1', server_port))
    input_s_modified, address = client_socket.recvfrom(65535)
    received_time = time()
    # 计算单次耗时并存入列表
    single_cost = received_time - sent_time
    response_times.append(single_cost)
    print(f'[CLIENT] 第{index+1}次请求响应来自服务器 {address}, 内容为: "{str(input_s_modified.decode("utf8"))}",耗时{single_cost}秒')

client_socket.close()
# 计算算术平均响应时间
avg_cost = sum(response_times) / len(response_times)
print(f"\n{REQUEST_COUNT}次请求的平均响应时间为: {avg_cost}秒")

改动说明

  • 新增REQUEST_COUNT常量定义请求次数,示例中设置为5,可直接修改为6或其他你需要的数值
  • 新增response_times列表,用来存储每一次请求的响应时间
  • 将原来单次发送请求、接收响应、计算耗时的逻辑包裹在for循环中,循环执行指定的次数
  • 固定请求内容input_s在循环外生成,保证每次发送的都是同一个请求符合需求
  • 所有请求执行完成后,通过求和除以总次数的方式计算算术平均响应时间并输出

运行时先启动原有UDP服务端,再启动修改后的客户端即可得到你需要的平均响应时间结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:06:02