【问题标题】:Synchronizing time between two PCs via TCP/IP, no server通过 TCP/IP 在两台 PC 之间同步时间,无需服务器
【发布时间】:2011-05-17 07:27:36
【问题描述】:

我有两台 PC 通过 LAN 连接。当用户更改一个时间(通过我的应用程序)时,我希望第二个时间也可以更新(或者第二台机器可以轮询第一台机器)。没有服务器,没有互联网。最好的方法是什么?

操作系统:XP 嵌入式。
框架:.Net 3.5

【问题讨论】:

    标签: .net communication ethernet


    【解决方案1】:

    如果你不能使用NTP服务器,你必须自己写。

    1. 这两个应用程序都实现了 WCF 服务,并且是另一个应用程序的一个客户端;
    2. 修改本地时间的应用程序通知对方并发送一个DateTime;
    3. 接收更新的 DateTime 的应用程序会更改本地时间(但请注意,您的应用程序需要更高的权限才能执行此操作,因为您必须通过非托管代码执行此操作);

    如果您不需要太多的精度,那么您就完成了。如果您需要更高的精度,则需要估计数据发送和到达之间的时间损失,这并非易事。

    【讨论】:

    • Simone:嗯,要估计时间损失,你可以做一个 ping。 (不过,两台 LAN 连接的计算机上的平均 ping 非常小。)
    【解决方案2】:

    一个低技术的解决方案可能是在需要更新的机器上执行命令NET TIME \\[OtherPC] /SET

    您可以将机器设置为在某个时间间隔调用它。

    请注意,我只在普通 Windows 机器上尝试过,但我认为它也适用于嵌入式。

    编辑:环顾四周,似乎 XP Embedded 可能支持 WMI,如果支持并且它确实具有 Win32_OperatingSystem 类并且它是 SetDateTime 方法,那么您的应用程序可以调用远程 pc,并且您可以避免轮询更改。

    【讨论】:

    • 谢谢,我两个都试试
    • 嗯,had a problem 第一个想法,因为我们的密码是空的,所以我们被拒绝访问。我会尝试第二个选项。
    【解决方案3】:

    是否可以将其中一台机器指定为 NTP 服务器?因此使用标准的 NTP 服务器系统,因此您不必自己编写。

    虽然我不熟悉 XPe,但此链接 Got the time? 似乎包含所有必需的流行语

    【讨论】:

      猜你喜欢
      • 2015-07-07
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多