【问题标题】:server and client timing different服务器和客户端计时不同
【发布时间】:2018-12-19 00:22:22
【问题描述】:

我有一个客户端服务器情况,每一方都在测量时间,只是似乎存在一个问题,即测量的时间不匹配。 长话短说,这个想法是有一个倒计时之后程序需要做的事情。我在服务器端测量这个。但是,倒计时需要显示,所以我要做的是在客户端单独运行它。最终结果是,当服务器在倒计时 10 分钟时发送指示时间到的消息时,客户端显示 23 秒。

客户端是XNA,代码:

MillisecCount += gameTime.ElapsedGameTime.Milliseconds;
if (MillisecCount >= 1000)
    {
    MillisecCount -= 1000;
    Timer++;
    }

然后从可用时间中减去 Timer 并显示出来。 在服务器端发生这种情况:

async Task timeOut(int delay, CancellationToken ct)
    {
    await Task.Delay(1000 * delay);

    ct.ThrowIfCancellationRequested();
    }

void sendTimeOutMessage(Task t)
    {
    //Send timeout message on network.
    }

void reTime()
    {
    CancellationTokenSource cts = new CancellationTokenSource();
    CancelStack.Push(cts);
    Task t = timeOut(maxTime - Timer, cts.Token);
    t.ContinueWith(sendTimeOutMessage, TaskContinuationOptions.OnlyOnRanToCompletion);
    }

在具有 23 秒差异的测试场景中,reTime() 仅在倒计时开始时被调用一次。

【问题讨论】:

    标签: time timer server xna client


    【解决方案1】:

    好的,事实证明有时 XNA 不计算时间,这使得客户端速度有些慢。在客户端使用秒表来同步两个端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 2021-04-21
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多