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

5G与2.4G网络下C/S模型时延测量的时间同步问题咨询

时钟同步问题解决思路

方案一:修改测量逻辑,从根源避免跨设备时钟依赖(优先推荐)

你当前的测量逻辑需要客户端和服务端时钟完全对齐才能得到准确值,改用时延往返测量方案无需时钟同步,实现更简单、精度更高:

  • 客户端发送请求时记录本地时间戳T1
  • 服务端收到请求后无需额外处理,直接返回空响应即可
  • 客户端收到服务端响应后记录本地时间戳T2
  • 单向上行时延可近似为(T2-T1)/2,测量结果完全不受两台设备时钟差影响

修改后参考代码

服务端代码

from flask import Flask, request
app = Flask(__name__) 

@app.route('/ping', methods = ['POST'])
def pingHandler():
    return 'OK'
    
app.run(host = '0.0.0.0' , port = 8090)

客户端代码

from datetime import datetime
import requests
from time import sleep
import csv

sample_size = 1000
test = 1
file_name = f"2.4G_Time_Data_{test}.csv"

# 初始化结果文件
with open(file_name, 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['Packet','Lag(uS)'])

for i in range(sample_size):
    T1 = datetime.timestamp(datetime.now())
    requests.post('http://myIP:8090/ping')
    T2 = datetime.timestamp(datetime.now())
    # 计算单向上行时延,单位微秒
    delta_time = (T2 - T1) * 10**6 / 2
    # 写入结果
    with open(file_name, 'a', newline='') as f:
        writer = csv.writer(f)
        writer.writerow([i+1, delta_time])
    sleep(0.1)

方案二:系统层时钟同步(保留原测量逻辑时使用)

如果确实需要保留单向时间戳测量的逻辑,可以通过以下方式同步两台设备的时钟:

  • NTP同步(毫秒级精度):两台设备都接入同一局域网,在其中一台设备上搭建本地NTP服务,另一台设备配置为该NTP服务的客户端,同步完成后时钟误差可控制在10ms以内,满足普通时延测量需求
  • PTP精确时间同步(微秒级精度):如果需要匹配你测量用的微秒级精度,可使用PTP协议,局域网内部署后两台设备时钟差可控制在1微秒以内,完全避免负时延问题
  • 临时手动同步:仅用于临时粗略测试,在两台设备上同时执行命令date -s "年-月-日 时:分:秒"手动校准时间,精度较低不建议用于正式测量

原测量相关材料

组网拓扑

5G组网拓扑

5G组网拓扑

2.4G组网拓扑

2.4G组网拓扑

原测量代码

原服务端代码

#!/usr/bin/env python
# coding: utf-8
from flask import Flask
from flask import request
from datetime import datetime

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

import csv
import time
from time import sleep
from decimal import Decimal

test = 1

#create csv. file to append data
file_name = "2.4G_Time_Data_" + str(test)
test = test + 1
print(file_name)

with open(file_name+'.csv', 'w', newline='') as time_file:
    spamwriter = csv.writer(time_file, delimiter=',',
                        quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Packet','Lag(uS)'])
    
#start running a server, saves the in coming data in a csv file
received_package = 0
app = Flask(__name__) 

@app.route('/postjson', methods = ['POST'])
def postJsonHandler():
    global received_package
    received_package = received_package + 1
    print(request.is_json)
    content = request.get_json()
    print (content)
    now = datetime.now()
    time = content["time"]
    time_now =  datetime.timestamp(now)
    print("Sent : " + str(time))
    print("Received : " + str(time_now) )
    delta_time = (time_now - time) * (10**6) # in micro seconds
    print("Packet Travel Time(s) : " + str(delta_time) )
    with open(file_name+'.csv', 'a') as f:
        writer = csv.writer(f)
        writer.writerow([str(received_package), str(delta_time)])
    return 'JSON Received'
    
app.run(host = '0.0.0.0' , port = 8090)

原客户端代码

from datetime import datetime
import requests
import signal
from time import sleep
import time

import os
import sys
import json

sample_size = 1000

for i in range(sample_size) :
    now = datetime.now()
    time = now.strftime("%H:%M:%S") + ":" + str(now.microsecond)
    #time = str(now)
    timestamp = datetime.timestamp(now)
    requests.post('http://myIP:8090/postjson', json={'time': timestamp})
    print ("Estimated size: " + str(sys.getsizeof(json) / 1024) + "KB")
    sleep(0.1)

2.4G测量结果

2.4G测量结果


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:15:03