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

标签 c linux ip packet

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

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

最佳答案

您是否尝试使用套接字库中的recvfrom?就像这个例子一样:

sock_raw = socket(AF_INET , SOCK_RAW , protocol);
while(1)
{
    data_size = recvfrom(sock_raw , buffer , 65536 , 0 , &addr , &addr_size);
}

关于c - 如何在Linux中使用SOCK_RAW接收IPv4数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59094460/

相关文章:

c - 试图通过模块在 apache 中强制自定义输出

c++ - 在 Linux 上使用 QTCreator IDE 的文件 IO

tcp - IP数据包和MAC目标地址

linux - 从 shell 中清理文件

linux - Oracle11GR2 在 Linux 上自动启动和关闭数据库

http - 端口被阻止时浏览器如何访问互联网

java - 如何在android中根据LAN上相应的主机名获取IP

c++ - 如果进程崩溃,映射文件会怎样?

c - C语言中如何统计某个字符在数组中出现的次数?

c - C 中的字符串相乘