static int init_socket()
{
int raw_sockfd_l2 = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));
struct sockaddr_ll sock_ip_pack;
{
printf("%s:%d:%s create the l2 raw socket is fail",__FILE__,__LINE__,__func__);
return ret;
}
sock_ip_pack.sll_family = AF_PACKET;
sock_ip_pack.sll_ifindex = get_interface_index(raw_sockfd_l2, "eth0");
sock_ip_pack.sll_protocol = htons(ETH_P_IP);
if (bind(raw_sockfd_l2, (struct sockaddr *)(&sock_ip_pack), sizeof(sock_ip_pack)) < 0)
{
CWDebugLog("%s:%d:%s bind is fail",__FILE__,__LINE__,__func__);

这篇博客介绍了如何在Linux环境下使用socket编程接口创建RAW套接字,以捕获和处理IP层的数据包。首先,通过socket()函数创建一个PF_PACKET类型的套接字,然后利用ioctl()和SIOCGIFINDEX获取网络接口索引,便于绑定到特定网络设备。

2468

被折叠的 条评论
为什么被折叠?



