开发者社区> 问答> 正文

如何在Linux中接收IPv4数据包?

如何在Linux中接收网络层(OSI第3层)数据包?更具体地说,IPv4数据包与传输层协议(UDP,TCP等)无关。最好在没有库的C语言中。

使用socket(AF_INET, SOCK_RAW, IPPROTO_RAW),我只能发送IPv4数据包;未收到。

展开
收起
kun坤 2019-11-29 11:26:33 3188 0
2 条回答
写回答
取消 提交回答
  • 阿里云ping https://ping.gaomeluo.com/aliyun/
    OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
           tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
           netns | l2tp | macsec | tcp_metrics | token }
    

    详细参考一下这里:https://linux.gaomeluo.com/c/ip.html

    2019-12-05 16:26:20
    赞同 1 展开评论 打赏
  • 你尝试recvfrom从套接字库。像这个例子:

    sock_raw = socket(AF_INET , SOCK_RAW , IPPROTO_TCP);
    while(1)
    {
        data_size = recvfrom(sock_raw , buffer , 65536 , 0 , &addr , &addr_size);
    }
    
    2019-11-29 11:26:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载