2006-06-6 (1)获取网口地址 linux GNU c ioctl

原创 2006年06月06日 21:13:00
unsigned long do_ioctl_get_ipaddress(char *dev)
{
                struct ifreq ifr;
                int fd;
                int err;
                unsigned long ip;
                unsigned long myip;
                struct in_addr tmp_addr;
                int i=0;
        strcpy(ifr.ifr_name, dev);
        fd = socket(AF_INET, SOCK_DGRAM, 0);
        err = ioctl(fd, SIOCGIFADDR, &ifr);
        if (err) {
                perror("ioctl");
                return 0;
        }
        close(fd);
        memcpy(&ip,ifr.ifr_addr.sa_data + 2,4);
        myip = ip;
        tmp_addr.s_addr=myip;
        return myip;
}
 
 
 

#include <sys/socket.h>

int socket (int family, int type, int protocol);

Figure 4.2. Protocol family constants for socket function.
Figure 4.3. type of socket for socket function.
Figure 4.4. protocol of sockets for AF_INET or AF_INET6.

Not all combinations of socket family and type are valid. Figure 4.5 shows the valid combinations, along with the actual protocols that are valid for each pair. The boxes marked "Yes" are valid but do not have handy acronyms. The blank boxes are not supported.

Figure 4.5. Combinations of family and type for the socket function.
 
 
 
 

#include <unistd.h>

int ioctl(int fd, int request, ... /* void *arg */ );

 
#define IFNAMSIZ     16

struct ifreq {
    char    ifr_name[IFNAMSIZ];  /* interface name, e.g., "le0" */
    union {
        struct  sockaddr ifru_addr;
        struct  sockaddr ifru_dstaddr;
        struct  sockaddr ifru_broadaddr;
        short   ifru_flags;
        int     ifru_metric;
        caddr_t ifru_data;
    } ifr_ifru;
};套接口地址结构

linux 利用ioctl函数获取IP地址、子网掩码、MAC地址和修改本机IP地址、子网掩码、网关

ioctl函数原型: int ioctl(int fd, int request, ..../*void *arg*/) int fd:为socket函数返回值 int request:SIOCSIF...
  • liuzh2010
  • liuzh2010
  • 2013年09月18日 09:11
  • 3770

socket 通过 ioctl获取 设置 网卡 IP 子网掩码 本地广播地址

参看 http://blog.chinaunix.net/uid-20692625-id-3172833.html 类别 Request 说明 数据类型 套  接 ...
  • Chengkai_
  • Chengkai_
  • 2016年07月29日 18:10
  • 1153

用ioctl设置mac地址 得到当前的ip地址,子网掩码等信息

#include /* for socket(2) and related bits and pieces */ #include /* for socket(2) */ #include ...
  • bingqingsuimeng
  • bingqingsuimeng
  • 2014年10月13日 14:57
  • 1310

MacBook Pro如何修改Type C网口适配器的Mac地址

MacBook Pro如何修改Type C网口适配器的Mac地址
  • u014051620
  • u014051620
  • 2017年07月13日 13:38
  • 1148

Linux下获取本地IP地址--------ioctl

获取本地的局域网IP地址,个人认为最好的还是这个神器---ioctl,这个接口的功能真是非常强大,非常值得研究和学习。即使本地的主机名是localhost,使用ioctl也可以轻松地获取局域网中的IP...
  • moonvs2010
  • moonvs2010
  • 2012年07月25日 17:59
  • 2908

NJUPT GNU/Linux编程 实验1-6总结(走过的坑)

课程小结:总结实验中一些踩过的坑。
  • think_ycx
  • think_ycx
  • 2015年12月28日 20:02
  • 853

Linux下获取本地IP地址--------ioctl

转自:http://blog.csdn.net/moonvs2010/article/details/7785894   获取本地的局域网IP地址,个人认为最好的还是这个神器---ioctl,这个接...
  • cos_sin_tan
  • cos_sin_tan
  • 2012年10月22日 15:09
  • 434

linux下使用ioctl() 获取本机mac地址、ip地址等等

在linux下,我们可以通过ifconfig获取mac地址和ip地址等相关信息,dan sh
  • rookie_Algo
  • rookie_Algo
  • 2014年04月08日 01:07
  • 5640

OK6410 FLASH RAM 网口地址分析

首先,来了解一下s3c6410的memory。 Memory,又叫主内存,分为4大区域,分别是启动镜像区、内部内存区、静态内存区、动态内存区。  启动镜像区物理地址为0x00000000~0x07...
  • zfx277266940
  • zfx277266940
  • 2011年11月09日 13:04
  • 780

linux 利用ioctl函数获取IP地址、子网掩码、MAC地址和修改本机IP地址、子网掩码、网关

ioctl函数原型: int ioctl(int fd, int request, ..../*void *arg*/) int fd:为socket函数返回值 int request:SIOCSIF...
  • liuzh2010
  • liuzh2010
  • 2013年09月18日 09:11
  • 3770
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2006-06-6 (1)获取网口地址 linux GNU c ioctl
举报原因:
原因补充:

(最多只允许输入30个字)