为什么不';Java和Wireshark中的时间戳不匹配吗?

为什么不';Java和Wireshark中的时间戳不匹配吗?,java,performance,optimization,time,wireshark,Java,Performance,Optimization,Time,Wireshark,在Java中,我通过以下方式获得时间戳: Date date= new java.util.Date(); return (new Timestamp(date.getTime())).toString(); 例如,输出为: Start - 2015-02-16 13:59:41.427 然后我将一个数据包写入套接字 然而,在Wireshark中,第一个数据包的日期如下: 62 2015-02-16 13:59:41.421115000 ... 什么 好吧,我不想有人告诉我时间戳被关

在Java中,我通过以下方式获得时间戳:

Date date= new java.util.Date();
return (new Timestamp(date.getTime())).toString();
例如,输出为:

Start - 2015-02-16 13:59:41.427
然后我将一个数据包写入套接字

然而,在Wireshark中,第一个数据包的日期如下:

62  2015-02-16 13:59:41.421115000   ...
什么

好吧,我不想有人告诉我时间戳被关闭了。有没有办法更改Java代码,使其生成更符合Wireshark的时间戳

谢谢

编辑:请求代码

System.err.println("Start - "+currentTimestamp());
int sent = socketChannelOut.write(data);

我怀疑这仅仅是因为你的系统测量时间的准确性。引用java文档:

“以毫秒为单位返回当前时间。请注意 返回值的时间为毫秒,即 值取决于基础操作系统,可能更大。 例如,许多操作系统以数十秒为单位测量时间 毫秒。”


由于您看到的差异为0.005885s,并且小于10ms,因此我不认为与另一个过程测量时间的比较会精确到小于10ms的粒度。这就是说,从Java得到的41.427实际上是41.427+/-10ms,我怀疑这只是因为系统测量时间的准确性。引用java文档:

“以毫秒为单位返回当前时间。请注意 返回值的时间为毫秒,即 值取决于基础操作系统,可能更大。 例如,许多操作系统以数十秒为单位测量时间 毫秒。”


由于您看到的差异为0.005885s,并且小于10ms,因此我不认为与另一个过程测量时间的比较会精确到小于10ms的粒度。这就是说,从Java得到的41.427实际上是41.427+/-10ms,我怀疑这只是因为系统测量时间的准确性。引用java文档:

“以毫秒为单位返回当前时间。请注意 返回值的时间为毫秒,即 值取决于基础操作系统,可能更大。 例如,许多操作系统以数十秒为单位测量时间 毫秒。”


由于您看到的差异为0.005885s,并且小于10ms,因此我不认为与另一个过程测量时间的比较会精确到小于10ms的粒度。这就是说,从Java得到的41.427实际上是41.427+/-10ms,我怀疑这只是因为系统测量时间的准确性。引用java文档:

“以毫秒为单位返回当前时间。请注意 返回值的时间为毫秒,即 值取决于基础操作系统,可能更大。 例如,许多操作系统以数十秒为单位测量时间 毫秒。”



由于您看到的差异为0.005885s,并且小于10ms,因此我不认为与另一个过程测量时间的比较会精确到小于10ms的粒度。这就是说,这次你从Java得到的41.427实际上是41.427+/-10ms

在你向套接字写入之前,你有没有记下时间戳?Wireshark是否知道正在监听某些NTP?@Zhedar是的。顺序是java中的时间戳,发送数据包,然后wireshark中的时间戳。@Zhedar在写入套接字后,在数据包出现在wireshark中之前,我希望会有一点延迟。我认为您看到的是完全正常的。将数据包向下推送到网络堆栈需要时间。您所看到的只是用java发送数据包和请求系统时间之间的时间差。您在写入套接字之前是否记录了时间戳?是否知道Wireshark会监听某些NTP?@Zhedar是的。顺序是java中的时间戳,发送数据包,然后wireshark中的时间戳。@Zhedar在写入套接字后,在数据包出现在wireshark中之前,我希望会有一点延迟。我认为您看到的是完全正常的。将数据包向下推送到网络堆栈需要时间。您所看到的只是用java发送数据包和请求系统时间之间的时间差。您在写入套接字之前是否记录了时间戳?是否知道Wireshark会监听某些NTP?@Zhedar是的。顺序是java中的时间戳,发送数据包,然后wireshark中的时间戳。@Zhedar在写入套接字后,在数据包出现在wireshark中之前,我希望会有一点延迟。我认为您看到的是完全正常的。将数据包向下推送到网络堆栈需要时间。您所看到的只是用java发送数据包和请求系统时间之间的时间差。您在写入套接字之前是否记录了时间戳?是否知道Wireshark会监听某些NTP?@Zhedar是的。顺序是java中的时间戳,发送数据包,然后wireshark中的时间戳。@Zhedar在写入套接字后,在数据包出现在wireshark中之前,我希望会有一点延迟。我认为您看到的是完全正常的。将数据包向下推送到网络堆栈需要时间。您所看到的只是在java中发送数据包和请求系统时间之间的时间差。此外,请添加时间戳是根据(舍入?)毫秒值(Date.getTime())构造的,而Wireshark可能会调用gettimeofday返回微秒。此外,请添加时间戳是根据(舍入?)毫秒值构造的毫秒值(Date.getTime()),而Wireshark可以调用返回微秒的gettimeofday。此外,请添加时间戳是根据(舍入?)毫秒值(Date.getTime())构造的,而Wireshark可以调用返回微秒的gettimeofday