請教 SO_TIMESTAMP 的使用方法

flow65536 2012-04-03 03:14:45
要在 linux 下使用 socket(SOCK_RAW) 來捕捉封包, 並且紀錄抓包封包的時間,
上網查了一下有 setsockopt(SO_TIMESTAMP) 能用, 但是我不太了解使用方法.

1. 是先用 recv() 之類的抓到封包內容後, 再用 recvmsg() 抓時間嗎 ?

2. 還是直接用 recvmsg() 就可以同時抓到封包內容和時間 ?

3. 其它方式.

不知道有沒有人知道, 如果有範例的話更好, 謝謝.
...全文
364 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-04-03
  • 打赏
  • 举报
回复
原始套接字可以发送任何协议的包,并且可以自己构造IP头,但是不能接受TCP/UDP协议的包,不管你用什么recv,recvmsg,read,都读不到。


另外,时间戳是TCP选项里的一部分,一般IP头20字节,TCP头20字节,再就是TCP头末尾追加的4字节对齐的TCP选项字段,里边可以包含时间戳,路由路径等等,你可以设置,但绝对收不到。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧