gpt4 book ai didi

networking - 获取数据包的延迟(TCP\UDP)

转载 作者:可可西里 更新时间:2023-11-01 02:54:17 25 4
gpt4 key购买 nike

我有一些服务器,它们必须根据数据包的延迟做出不同的响应。

是否有可能在服务器端获得单独数据包的延迟(“行进时间”)?(最好使用 Python(但不是必需的)或以某种方式配置服务器)?

清晰理解的示例:

# Pseudo-code
def handle_packet(packet):
if packet.latency > X:
# Declare war on the latency gods
else:
# Make peace with the latency gods

最佳答案

假设我理解你的问题是正确的,你将不得不修改客户端以进行“ping”操作。服务器将必须对客户端执行 ping 操作,然后客户端将立即以 pong 响应,并且服务器将必须计算从发送 ping 到获得 pong 所花费的时间。这最好使用带外 UDP 或 TCP 来完成,因为使用普通 TCP,您的数据包可能会卡在队列中,排在其他仍在传输的数据后面,人为地增加了您的 ping。

为了回答更多我认为您要问的问题。获取从计算机 a 到计算机 b 再返回到 a 的往返时间不是 TCP 或 UDP 中的标准操作,它由 ICMP (ping) 处理。您可以自由地使用 TCP 或 UDP 实现您自己的 ping 操作,它只是不符合标准。

附言在您提问之前,有几个不使用 ICMP ping 的原因。第一,它有可能被防火墙保护。第二,它一般不会在非特权进程中运行。大多数操作系统不支持 ICMP 协议(protocol),因此您必须获得对网络接口(interface)的原始访问权限,这是一项特权操作。

对您的评论的回应:

看来您要求的是在不进行乒乓球的情况下获取数据包从客户端传输到服务器所花费的时间。唯一可能的方法是同步时钟并将客户端上的时间放入数据包中。答:您的客户端很可能不会有同步时钟。 B. 即使客户端确实有一个同步时钟,您也必须在应用程序级别更改协议(protocol)以添加此时间戳,听起来您的问题陈述不允许您这样做。

关于networking - 获取数据包的延迟(TCP\UDP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31138905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com