日期:2014-05-16  浏览次数:20761 次

获取linux链路层数据
int main()
{
    int sockfd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));
    if (sockfd < 0)
    {   
        perror("err:");
        printf("sockfd err\n");
    }   
    printf("sockfd:%d\n", sockfd);

    close(sockfd);
    return;
}
为什么socket创建失败,失败提示:err:: Operation not permitted

------解决方案--------------------
没root权限?
------解决方案--------------------
SOCK_RAW 要root
------解决方案--------------------
使用SOCK_RAW绕开了传输层,直接到网络层获取数据,需要ROOT权限才能访问。