Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java访问NIC或内核时间戳数据_Java_C_Sockets_Java Native Interface_Ptpd - Fatal编程技术网

从Java访问NIC或内核时间戳数据

从Java访问NIC或内核时间戳数据,java,c,sockets,java-native-interface,ptpd,Java,C,Sockets,Java Native Interface,Ptpd,我将Solarflare卡与sfptpd一起使用,并在我的C代码中使用硬件时间戳。它与提供以下输出的没有太大区别: $ export EF_RX_TIMESTAMPING=3 $ onload ./rx_timestamping --proto udp --port 6666 oo:rx_timestamping[32356]: Using OpenOnload 201509-u1 Copyright 2006-2016 Solarflare Communications, 2002-2005

我将Solarflare卡与
sfptpd
一起使用,并在我的C代码中使用硬件时间戳。它与提供以下输出的没有太大区别:

$ export EF_RX_TIMESTAMPING=3
$ onload ./rx_timestamping --proto udp --port 6666
oo:rx_timestamping[32356]: Using OpenOnload 201509-u1 Copyright 2006-2016 Solarflare Communications, 2002-2005 Level 5 Networks [1]
Socket created, listening on port 6666
Socket accepted
Selecting hardware timestamping mode.
Packet 1 - 3 bytes  timestamps 1468588400.706881929 1468588400.706878923 1468588400.706878923 
Packet 2 - 3 bytes  timestamps 1468588403.815893129 1468588403.815890313 1468588403.815890313
其思想是检查与
msghdr
结构相关的辅助数据,并从
SO_TIMESTAMPNS
中提取
timespec
(如果我想依赖软件内核时间戳,而不需要Solarflare、onload等,这几乎是一样的)

到目前为止还不错。我想知道是否有任何方法可以使用标准JavaAPI访问这些时间戳?如果没有,那么最简单的方法是什么?我不介意破解一些JNI代码。在最坏的情况下,我可以在本地代码中处理网络,通过元数据向Java提供接收到的数据(但如果可能,我希望避免这样做,因为我正在考虑从现有应用访问时间戳)