ioctl函数
来源:互联网 发布:会员购淘宝u站 编辑:程序博客网 时间:2024/06/07 02:13
Ioctl函数
通常用来控制设备,控制特殊设备文件的属性
Int ioctl(int fd, int request, …)
Fd:已经打开的文件描述符
第三个参数一般为char *argp,它随第二个参数request的不同而不同。参数request决定了参数argp是向ioctl传递数据还是从ioctl获取数据。
Ioctl获取网络设备的信息
#include <stdio.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <net/if.h>
unsigned char g_eth_name[16];
unsigned char g_macsddr[6];
unsigned int g_subnetmask;
unsigned int g_ipaddr;
unsigned int g_broadcast_ipaddr;
// 初始化网络,获取当前网络设备的信息
void init_net(void)
{
inti;
intsock;
structsockaddr_in sin;
structifreq ifr;
sock= socket(AF_INET, SOCK_DGRAM, 0);
if(sock == -1)
{
perror("socket");
}
strcpy(g_eth_name,"eth3");
strcpy(ifr.ifr_name,g_eth_name);
printf("ethname:\t%s\n", g_eth_name);
//获取并打印网卡地址
if(ioctl(sock, SIOCGIFHWADDR, &ifr) < 0)
{
perror("ioctl");
}
memcpy(g_macsddr,ifr.ifr_hwaddr.sa_data, 6);
printf("localmac:\t");
for(i = 0; i < 5; i++)
{
printf("%.2x:",g_macsddr[i]);
}
printf("%.2x\n",g_macsddr[i]);
//获取并打印ip地址
if(ioctl(sock, SIOCGIFADDR, &ifr) < 0)
{
perror("ioctl");
}
memcpy(&sin,&ifr.ifr_addr, sizeof(sin));
g_ipaddr= sin.sin_addr.s_addr;
printf("localeth0:\t%s\n", inet_ntoa(sin.sin_addr));
//获取并打印广播地址
if(ioctl(sock, SIOCGIFBRDADDR, &ifr) < 0)
{
perror("ioctl");
}
memcpy(&sin,&ifr.ifr_addr, sizeof(sin));
g_broadcast_ipaddr= sin.sin_addr.s_addr;
printf("broadcast:\t%s\n",inet_ntoa(sin.sin_addr));
//获取并打印子网掩码
if(ioctl(sock, SIOCGIFNETMASK, &ifr) < 0)
{
perror("ioctl");
}
memcpy(&sin,&ifr.ifr_addr, sizeof(sin));
g_subnetmask= sin.sin_addr.s_addr;
printf("subnetmask:\t%s\n",inet_ntoa(sin.sin_addr));
close(sock);
}
int main()
{
//init
init_net();
//do something
return0;
}
- ioctl函数
- ioctl()函数
- ioctl()函数
- ioctl()函数
- ioctl()函数
- ioctl 函数
- ioctl函数
- ioctl 函数
- ioctl函数
- ioctl函数
- Ioctl 函数
- ioctl 函数
- ioctl 函数
- ioctl函数
- ioctl函数
- ioctl函数
- ioctl 函数
- ioctl 函数
- java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x12
- ios项目中安装和使用CocoaPods
- js 拨打电话号码的方法
- PYTHON and R pandas包
- 多种的方法得到数据库的connection
- ioctl函数
- zoj3903 大数相乘
- phonegap 集成Keymob中文入门教程
- LNMP环境配置
- 【ROS】Ubuntu12.04下ROS-Fuerte安装及工作环境配置
- 手把手教程序员如何追到女神(附详细教程)
- TaskContinuationOptions items
- php5 mysqli 连数据库创建表
- AFHTTPRequestOperationManager简单使用