ioctl()函数的详解:http://blog.csdn.net/shanshanpt/article/details/19897897
ioctl和struct ifreq:http://blog.csdn.net/shanshanpt/article/details/19897897
ioctl在socket中的一些用法及示例 ,控制网络文件:http://blog.chinaunix.net/uid-20692625-id-3172833.html
————————————————————————————————————

函数 : ioctl(int fd, int request, void * arg)
定义 : <sys/ioctl.h>
功能 : 控制I/O设备, 提供了一种获得设备信息和向设备发送控制参数的手段.
参数 :int  fd      文件句柄. 用于socket时, 是socket套接字.int  request 函数定义的所有操作. 关于socket的操作, 定义在<linux/sockios.h>文件中.void *arg    指针的类型依赖于request参数.

getip.c:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>#include<net/if.h>
#include<arpa/inet.h>
#include<sys/socket.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>int main (int argc, char **argv)
{struct sockaddr_in *addr;struct ifreq ifr;char *address;int sockfd;unsigned char hd[10];char *name = "eth0";if(strlen(name) >= IFNAMSIZ){printf("device error\n");exit(0);}strcpy(ifr.ifr_name,name);sockfd = socket(AF_INET,SOCK_DGRAM,0);if(ioctl(sockfd,SIOCGIFADDR,&ifr) == -1){printf("ioctl error\n");exit(0);}addr = (struct sockaddr_in *)&(ifr.ifr_addr);address = inet_ntoa(addr->sin_addr);printf("IP:%s\n",address);if(ioctl(sockfd,SIOCGIFNETMASK,&ifr) == -1){printf("ioctl error\n");exit(0);}addr = (struct sockaddr_in *)&(ifr.ifr_addr);address = inet_ntoa(addr->sin_addr);printf("Mask: %s\n",address);if(ioctl(sockfd,SIOCGIFHWADDR,&ifr) == -1){printf("ioctl error\n");exit(0);}memcpy(hd,ifr.ifr_hwaddr.sa_data,sizeof(hd));printf("HWaddr:%02X:%02X:%02X:%02X:%02X:%02X\n",hd[0],hd[1],hd[2],hd[3],hd[4],hd[5]); return 0;
} /* ----- End of main() ----- */

测试结果:

ioctl()函数的简单使用——获取本机的IP、掩码、HWaddr相关推荐

  1. VB6获取本机所有IP地址公用函数

    因为正好有用到,整了个公用函数,一次获取本机全部IP地址: Option ExplicitPrivate Declare Function WSAstartup Lib "WSOCK32.D ...

  2. 【Win 10 应用开发】获取本机的IP地址

    按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...

  3. python项目实战:获取本机所有IP地址的方法

    2019独角兽企业重金招聘Python工程师标准>>> 前言 今天为大家介绍一个利用python获取本机所有IP地址的具体代码,具有一定的参考价值,希望能够帮助到大家,代码如下: 导 ...

  4. C++获取本机的ip地址程序

    C++获取本机的ip地址程序 #include <WinSock2.h> #pragma comment(lib,"ws2_32") //链接到ws2_32动态链接库c ...

  5. 使用Linux curl命令获取本机公网IP地址

    使用Linux curl命令获取本机公共IP地址 在本教程中,我们将学习如何使用Linux curl命令查找计算机的公共IP地址. 通常,如果我们想要找到我们使用的公共IP地址,我们会去谷歌并搜索&q ...

  6. Spring boot 获取本机的IP地址mac地址以及电脑名称!

    Spring boot 获取本机的IP地址mac地址以及电脑名称! package com.example.demo;import java.net.InetAddress;import java.n ...

  7. 如何在Node.js中获取本机本地IP地址

    最近在做Cloud related的项目时,遇到一个问题,就是如何在Node.js中获取本机的IP地址.Node.js提供的API中,只能获取本机的hostname. os = require('os ...

  8. C#如何获取本机网络ip地址

    C#如何获取本机网络ip 有几种方法获取本机局域网地址和网络地址. 1.  获取本机局域网地址: 使用IPHostEntry static string GetLocalIp()         { ...

  9. sql server 获取本机的ip地址

    --sql server 获取本机的ip地址 -- 其实就是使用xp_cmdshell 来获取信息,然后对信息进行筛选. --开启xp_cmdshell exec sp_configure 'show ...

  10. 用php获取本机的IP

    最近在写个东西时,需要获取本机的IP,但是由于php本身不带这样的功能,在网上找了好久也没有一个好办法,突然想到一个好办法,如下代码 <?=gethostbyname($_ENV['COMPUT ...

最新文章

  1. python调用shell命令-Python怎么运行shell脚本
  2. spinbox 上下箭头事件_[React] 3 - 自动绑定 (事件绑定)
  3. Eclipse卸载Groovy Development tool时,为什么要去查询hana.ondemand.com的资源?
  4. 吉米多维奇数学分析习题集每日一题--泰勒公式习题1376
  5. 如何用计算机模拟光的传播,菲涅尔计算全息干涉图的制作与模拟再现.doc
  6. MATLAB图像分割之阈值分割
  7. toastr弹出提示窗口的使用
  8. 小米平板4刷recovery教程_米板4解锁刷机教程
  9. c2c开店流程图_c2c的主要业务流程图以及路线?
  10. 量化交易员珍藏的10本书,一般人不会教你的事
  11. Win10共享文件时提示需要输入网络凭据怎么办?
  12. C# 程序关闭托盘图标不会自动消失
  13. 数据结构 - 逻辑结构和存储结构
  14. mysql查询选课数_[MySQL]查询学生选课的情况(二)
  15. 【GeoFans】GNSS相关产品团队
  16. 网件 R6400 TTL 救砖详细 教程
  17. 入手内核的前篇之进程和计划任务
  18. “百度杯”CTF比赛 十月场 - 那些年我追过的贝丝
  19. BND for mac安装和使用
  20. 中国高校人工智能专业综合排名榜单

热门文章

  1. uwp浏览器java源码_uwp开发:webview模拟安卓浏览器
  2. 黑马畅购商城---9.Spring Security Oauth2 JWT授权
  3. 绝对地址、相对地址、/、./、../之间的区别
  4. 一些网址备忘 (在线剪辑音频、在线工具箱、全网音乐下载)
  5. html绘制中国地图,ECharts绘制中国地图、广西地图
  6. 2020年总结:敏而多思,宁静致远——纪念这风雨兼程的一年
  7. 乔布斯斯坦福毕业演讲
  8. codeforces 1436E Complicated Computations
  9. 图片怎么改成jpg格式
  10. msg1500说明书_MSG1500刷机笔记