【libpcap】获取报文pcap的ns级别的时间戳

1.安装libpcap

首先,下载最新的 libpcap 源代码。你可以从 tcpdump.org 获取最新版本

1 解压下载的libpcap
tar -zxvf libpcap-version.tar.gz
2 进入解压目录进行安装
cd libpcap-version
./configure
make
sudo make install

2 解析报文时间戳

#include <pcap/pcap.h>
#include <stdio.h>int main() {char errbuf[PCAP_ERRBUF_SIZE];pcap_t *handle;// 替换为你的网络接口名称,例如 "eth0"char *dev = "eth3";// 创建 pcap 句柄handle = pcap_create(dev, errbuf);if (handle == NULL) {fprintf(stderr, "无法创建 pcap 句柄: %s\n", errbuf);return 1;}// 设置纳秒级时间戳精度if (pcap_set_tstamp_precision(handle, PCAP_TSTAMP_PRECISION_NANO) != 0) {fprintf(stderr, "设置纳秒级时间戳精度失败: %s\n", pcap_geterr(handle));// 也可以选择在这里退出,如果纳秒级别时间戳是必需的}// 激活 pcap 句柄if (pcap_activate(handle) != 0) {fprintf(stderr, "激活 pcap 句柄失败: %s\n", pcap_geterr(handle));pcap_close(handle);return 1;}// 检查实际的时间戳精度int tstamp_precision = pcap_get_tstamp_precision(handle);struct pcap_pkthdr *header;const u_char *packet;// 捕获循环while (pcap_next_ex(handle, &header, &packet) >= 0) {// 根据时间戳精度打印时间if (tstamp_precision == PCAP_TSTAMP_PRECISION_NANO) {printf("Timestamp: %ld seconds, %ld nanoseconds\n",header->ts.tv_sec, header->ts.tv_usec);} else {printf("Timestamp: %ld seconds, %ld microseconds\n",header->ts.tv_sec, header->ts.tv_usec);}}pcap_close(handle);return 0;
}

编译:

gcc -o packet_capture packet.c -I/custom/path/include -L/custom/path/lib -lpcap

-I/custom/path/include 告诉编译器在 /custom/path/include 目录中查找头文件。通常这是安装 libpcap 头文件的地方。
-L/custom/path/lib 告诉编译器在链接阶段查找库文件的 /custom/path/lib 目录。这是 .so 文件通常所在的位置。
-lpcap 指示编译器链接 libpcap 库
运行:

sudo ./packet_capture

效果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/341488.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第11章 GUI Page489~494 步骤三十 保存画板文件

为“保存”菜单项 MenuItemFileSave挂接事件响应函数&#xff1a; 实际运行时&#xff0c;现版TrySaveFile()函数有点儿傻&#xff0c;点击保存菜单&#xff0c;还会弹出对话框&#xff0c;问我们“要不要保存” 修改TrySaveFile()函数 函数声明修改为&#xff1a; 函数实现修…

工业以太网的网络安全与数据传输性能

工业以太网主要是一种用于工业控制系统的网络通信协议&#xff0c;它基于以太网技术&#xff0c;将其应用于工业环境中&#xff0c;以实现高速、可靠、安全的数据传输。跟传统的专用工业网络比较&#xff0c; 工业以太网具有更大的带宽、更低的成本以及更好的扩展性&#xff0c…

Maven 依赖管理项目构建工具 教程

Maven依赖管理项目构建工具 此文档为 尚硅谷 B站maven视频学习文档&#xff0c;由官方文档搬运而来&#xff0c;仅用来当作学习笔记用途&#xff0c;侵删。 另&#xff1a;原maven教程短而精&#xff0c;值得推荐&#xff0c;下附教程链接。 atguigu 23年Maven教程 目录 文章目…

【数据库学习】ClickHouse(ck)

1&#xff0c;ClickHouse&#xff08;CK&#xff09; 是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 1&#xff09;特性 按列存储&#xff0c;列越多速度越慢&#xff1b; 按列存储&#xff0c;数据更容易压缩&#xff08;类型相同、区分度&#xff09;&#xff1b…

半Happy的一天

终于差不多将SWMM模型与LisFlood模型耦合运转起来了 MDL的雏型也出来了&#xff0c;注册了模型方法和参数&#xff0c;差一个方法参数 晚上和师兄聊了聊未来规划&#xff0c;回顾了这半年研究生生涯的“拍烂”生活&#xff08;其实也没特别摆烂&#xff0c;还是学了不少东西&…

JDBC

1 连接JDBC jdbc是连接java和数据库的桥梁&#xff0c;对于不同的数据库&#xff0c;如果我们希望用java连接&#xff0c;我们需要下载不同的驱动。这里我们使用mysql数据库&#xff0c;下载驱动。 MySQL :: Download MySQL Connector/J (Archived Versions) &#xff08;版本…

计算机网络-VLAN间通信

之前复习了VLAN的概念以及几个接口类型。VLAN在二层可以实现广播域的划分&#xff0c;VLAN间可以实现二层通信&#xff0c;但是不能实现三层通信&#xff0c;需要借助其它方式。 一、概述 实际网络部署中一般会将不同IP地址段划分到不同的VLAN。同VLAN且同网段的PC之间可直接进…

windows安装RabbitMq,修改数据保存位置

1、先安装Erlang&#xff0c; Erlang和RabbitMQ有版本对应关系。 官网RabbitMQ与Erlang版本对应RabbitMQ Erlang Version Requirements — RabbitMQ 2、安装RabbitMQ。 3、修改数据保存地址。找到安装目录下的sbin文件夹&#xff0c;找到rabbitmq-env.bat&#xff0c;编辑文件…

Nvidia 推出了一款新型芯片,专为在家中运行人工智能而设计

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

小程序系列--4.协同工作和发布

一、小程序成员管理 1. 成员管理的两个方面 2. 不同项目成员对应的权限 3. 开发者的权限说明 4. 添加项目成员和体验成员 二、小程序的版本 1、小程序的版本 三、发布上线 1. 小程序发布上线的整体步骤 一个小程序的发布上线&#xff0c;一般要经过上传代码 -> 提…

vue3的福音框架arco.design

前言&#xff1a; 在vue2于2023年底正式宣布不在维护&#xff0c;vue3使用越来越频繁的时刻&#xff0c;我们实现项目的辅助框架也越来越多。element, iview, antd 等经典框架继续风靡一时&#xff0c;不过也有很多好的框架&#xff0c;功能也强大&#xff0c;比如我们今天说的…

基于人工蜂群算法多无人机轨迹规划

#生物背景 蜜蜂是一种群居生物&#xff0c;生物学家研究发现蜜蜂以跳舞的方式来交换蜜源信息。根据分工的不同&#xff0c;蜜蜂被分为三个工种&#xff1a;引领峰、跟随蜂、侦察蜂。 侦察蜂的职责是侦察蜜源&#xff08;即蜜蜂的食物&#xff09;&#xff0c;一旦某一个侦察蜂…