开发者社区 问答 正文

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

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

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

展开
收起
祖安文状元 2020-01-16 16:44:53 833 分享 版权
1 条回答
写回答
取消 提交回答
  • 你尝试recvfrom从套接字库。像这个例子:

    sock_raw = socket(AF_INET , SOCK_RAW , protocol);
    while(1)
    {
        data_size = recvfrom(sock_raw , buffer , 65536 , 0 , &addr , &addr_size);
    }
    
    2020-01-16 16:45:32
    赞同 展开评论