c - 为什么我的原始套接字没有被创建?

标签 c networking network-programming network-protocols

这是我的代码。它在编译过程中不会给出任何错误。但是当我运行它时,它给出了

Recv from error , failed to get packets

错误。怎么了?

logfile=fopen("log.txt","w");
if(logfile==NULL) printf("Unable to create file.");
printf("Starting...\n");
//Create a raw socket that shall sniff
sock_raw = socket(AF_INET , SOCK_RAW , IPPROTO_TCP);

if(sock_raw < 0)
{
    printf("Socket Error\n");
    return 1;
}
while(1)
{
    saddr_size = sizeof saddr;
    //Receive a packet
    data_size = recvfrom(sock_raw , buffer , 65536 , 0 , &saddr , &saddr_size);
    if(data_size <0 )
    {
        printf("Recv from error , failed to get packets\n");
        return 1;
    }
    //Now process the packet
    ProcessPacket(buffer , data_size);
}
close(sock_raw);
printf("Finished");
return 0;

}

最佳答案

当您运行可执行文件时,只需在 ./executablefilename 之前使用 sudo 命令。 像:$gcc pack.c -o pack 进而 $sudo ./pack 然后它会运行良好 谢谢

关于c - 为什么我的原始套接字没有被创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9123559/

相关文章:

c - 我想使用 memset 从字符串中删除一些字符

c - C 中的递归和 printf

C - 双向链表 - 节点的内容不正确(难以解释)

java - 如何从 Python 中的套接字读取原始字节?

python - 使用 Python 解析 LLDP 输出

python - Python 中的带宽限制

python - 多宿主 UDP Python 服务器监听 0.0.0.0

无法调试 kaa_client_create() 函数

objective-c - NSOutputStream 完成后关闭连接

java - 使用udp在java和simulink之间传输 double