如何在 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/