0

我有一个基于 tcp/ip 协议的服务器客户端应用程序,其中服务器和客户端都以不同的速率运行。我使用 Carmaker 作为服务器和一些 C 模块作为客户端从它接收数据。我的客户每 20 毫秒运行一次[根据项目],而 Carmaker 每 1 毫秒运行一次它的内部功能,如果我们需要,可以使用暂停情况。

我需要让服务器和客户端同步,当客户端处理它是 20 毫秒的步骤时,Carmaker 将完成它的 1 毫秒的 20 个步骤。即我想暂停汽车制造商,直到客户完成它的过程。

我正在将客户端时钟时间发送到服务器并在服务器内实现以下代码。

case SCState_Simulate:
if ((rv=App_TestRun_Calc(DeltaT)) != 0)
    SimCore_State_Set (SCState_End);

    //if((SimCore.CycleNo - start_cycle_)>runto_cycle_){
        //Log("IfLessthanSimulate: %d\n", SimCore.CycleNo);
    //}
    //Log("StartSimulate: %d\n", SimCore.CycleNo);
    Log("Simulate Carmakertime: %ld Clienttime: %ld in milliseconds\n", carmaker_time_ms,client_time_ms );

    SimCore_State_Set(carmaker_time_ms<=client_time_ms ? SCState_Simulate : SCState_Pause);
break;


  case SCState_Pause:
// wait for continue
    //Log("Pause: %d\n", SimCore.CycleNo);
    Log("Pause Carmakertime: %ld Clienttime: %ld in milliseconds\n", carmaker_time_ms,client_time_ms );
    SimCore_State_Set(carmaker_time_ms<=client_time_ms ? SCState_Simulate : SCState_Pause);
break;

在客户端,我正在接收服务器时间并等待 carmaker_time_ms<client_time_ms 然后将客户端时间发送到汽车制造商服务器。

请您帮忙修改并告诉我如何使服务器和客户端同步。

4

0 回答 0