java - 同步实际时间(java,c)

标签 java c winapi time synchronization

我正在开发简单的游戏(只是为了好玩)。 我在 c 中有服务器,在 java 中有客户端。

我想在 serverclient 上获得实际时间,但我无法得到相同的结果时间。

在我使用的服务器上:

// the system time
SYSTEMTIME systemTime;
GetSystemTime(&systemTime);

// the current file time
FILETIME fileTime;
SystemTimeToFileTime(&systemTime, &fileTime);

// filetime in 100 nanosecond resolution
ULONGLONG fileTimeNano100;
fileTimeNano100 = (((ULONGLONG) fileTime.dwHighDateTime) << 32) + fileTime.dwLowDateTime;

//to milliseconds and unix windows epoche offset removed
ULONGLONG posixTime = fileTimeNano100 / 10000 - 11644473600000;
return posixTime;

我得到时间格式(输出):1750721123

在我使用的客户端上

long lDateTime = new Date().getTime();
System.out.println("Date() - Time in milliseconds: " + lDateTime);

Calendar lCDateTime = Calendar.getInstance();
System.out.println("Calender - Time in milliseconds :" + lCDateTime.getTimeInMillis());

我开始格式化(输出):

Calender - Time in milliseconds :1419089968022
Date() - Time in milliseconds: 1419089968022

为什么?哪里有问题?我怎样才能得到相同的时间?

两个程序在同一台电脑上运行(win 8.1)

最佳答案

首先。第一个代码块似乎根本不是标准的 C 代码,或者更确切地说,您使用了一些我根本不知道的库。

没有简单的方法可以在标准 C 中以小于一秒的精度获取实际时间。但这里是实际工作的 Java 和 C 示例,所以我希望这会有所帮助。

Java

封装堆栈溢出;

import java.util.Date;

public class Main {

    public static void main(String[] args) {
        long lDateTime = new Date().getTime();
        System.out.println(lDateTime/1000);
    }

}

输出:1436200408

C

#include<stdio.h>
#include<stdlib.h>
#include<sys/time.h>
#include<time.h>

int main(void) {
    struct timeval tv;

    gettimeofday(&tv, NULL);
    printf("%ld\n", tv.tv_sec);

    return 0;
}

输出:1436200418

关于java - 同步实际时间(java,c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27581734/

相关文章:

c - 尝试根据一个人的轮类模式计算休息日

c - 外部初始化函数

c++ - 所有者绘制的复选框

java - 如何打印到文件?

JAVA - 如何从 JTree 访问 ArrayList 的对象

java - “海拔”不在 ViewPager 中显示阴影

java - SNAPSHOT 和 RELEASE 版本未在 Maven 本地存储库中获得更新

c - 如何用2个线程同时读取/写入文件?

c++ - 我需要做什么才能将我的桌面应用程序提交到 Windows 应用商店?

c++ - 多线程应用程序中的 SetCurrentDirectory