ifreq结构中的IP怎么提取出来? Linux下
发布网友
发布时间:2022-04-26 09:28
我来回答
共1个回答
热心网友
时间:2022-06-26 18:51
#include <net/if.h>
#include <net/if_arp.h>
#include <arpa/inet.h>
#include <errno.h>
#define ETH_NAME "eth0"
int main()
{
int sock;
struct sockaddr_in sin;
struct ifreq ifr;
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock == -1)
{
perror("socket");
return -1;
}
strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ - 1] = 0;
if (ioctl(sock, SIOCGIFADDR, &ifr) < 0)
{
perror("ioctl");
return -1;
}
memcpy(&sin, &ifr.ifr_addr, sizeof(sin));
fprintf(stdout, "eth0: %s\n", inet_ntoa(sin.sin_addr));
return 0;
}
linux 下获取本地ip地址后 怎样
方法一:ioctl()获取本地IP地址 Linux 下 可以使用ioctl()函数以及结构体 struct ifreq和结构体struct ifconf来获取网络接口的各种信息。具体过程是先通过ictol获取本地的所有接口信息,存放到ifconf结构中,再从其中取出每个ifreq表示的ip信息(一般每个网卡对应一个IP地址,如:”eth0…、eth1…”)。先...
Linux下C语言操作网卡的几个代码实例?特别实用
一、操作原理 主要通过系统调用socket()和ioctl()来实现。网络中使用的request定义头文件位于:而ioctl的参数需要通过结构体struct ifreq来定义,其头文件如下:二、函数实现 以下将详细列举实现不同功能的函数。0. 列出所有可用网口 1. 获取指定网卡IP 2. 设置本网卡IP地址 3. 获取本机网卡Mac地址 4....
网络编程时,套接口ioctl函数的参数struct ifreq定义在哪个文件里_百度...
用来配置ip地址,激活接口,配置MTU等接口信息的。linux系统中建议使用netlink接口替代 兄弟,很多人不回帖是因为这个问题问的有些那个,不知道你是不是学网络编程的。送你俩建议:UNP Ed3 VOL1一定要随时放在手边。/usr/include目录下以及其子目录 sys/ net/ netinet/ linux 的文件希望你 没事就去...
混杂模式的linux下通过C设置混杂模式(以eth0举例)
char *eth_name = eth0; //对网卡eth0进行混杂设置struct ifreq ethreq; //网络接口结构strncpy(ethreq.ifr_name, eth_name, IFNAMSIZ); //指定网卡名称if(-1 == ioctl(sock_raw_fd, SIOCGIFFLAGS, &ethreq)) //获取网络接口{perror(ioctl);close(sock_raw_fd);exit(-1);}/*此处用 |...
struct模块中的ioctl函数有什么作用?
一、在普通程序中设置网卡混杂模式。在普通程序中普遍用ioctl函数来设置,该函数很值得大家好好的了解,因为它的使用非常的广泛。下面 给出设置网卡混杂模式的实现代码:include include include include int set_all_promisc(){ struct ifreq ifaces[16];struct ifconf param;int sock, i;param.ifc_len ...
有个关于网络编程的main参数中argc的问题。
argc是命令行执行的参数数目,就是这么简单,这个计数是包括你执行程序名的,你依次打印下argv这个参数数组指向的所有Cstring,就明白了