首页 / LINUX / linux c函数获取系统IP地址
linux c函数获取系统IP地址
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux c函数获取系统IP地址,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2166字,纯文字阅读大概需要4分钟。
内容图文
![linux c函数获取系统IP地址](/upload/InfoBanner/zyjiaocheng/978/31978a9ce83741ba8ab0fec2b6433247.jpg)
一,通过分析/etc/hosts文件里映射关系获取ip地址。
#include <stdio.h>
#include <netdb.h>
int main()
{
struct hostent *he;
char hostname[20] = {0};
gethostname(hostname,sizeof(hostname));
he = gethostbyname(hostname);
printf("hostname=%s\n",hostname);
printf("%s\n",inet_ntoa(*(struct in_addr*)(he->h_addr)));
}
二,通过ioctl()函数
下表列出了网络相关ioctl请求的request 参数以及arg 地址必须指向的数据类型:
类别 | Request | 说明 | 数据类型 |
套 接 口 |
SIOCATMARK SIOCSPGRP SIOCGPGRP |
是否位于带外标记 设置套接口的进程ID 或进程组ID 获取套接口的进程ID 或进程组ID |
int int int |
文 件 |
FIONBIN FIOASYNC FIONREAD FIOSETOWN FIOGETOWN |
设置/ 清除非阻塞I/O 标志 设置/ 清除信号驱动异步I/O 标志 获取接收缓存区中的字节数 设置文件的进程ID 或进程组ID 获取文件的进程ID 或进程组ID |
int int int int int |
接 口 |
SIOCGIFCONF SIOCSIFADDR SIOCGIFADDR SIOCSIFFLAGS SIOCGIFFLAGS SIOCSIFDSTADDR SIOCGIFDSTADDR SIOCGIFBRDADDR SIOCSIFBRDADDR SIOCGIFNETMASK SIOCSIFNETMASK SIOCGIFMETRIC SIOCSIFMETRIC SIOCGIFMTU SIOCxxx |
获取所有接口的清单 设置接口地址 获取接口地址 设置接口标志 获取接口标志 设置点到点地址 获取点到点地址 获取广播地址 设置广播地址 获取子网掩码 设置子网掩码 获取接口的测度 设置接口的测度 获取接口MTU (还有很多取决于系统的实现) |
struct ifconf struct ifreq struct ifreq struct ifreq struct ifreq struct ifreq struct ifreq struct ifreq struct ifreq struct ifreq struct ifreq struct ifreq struct ifreq struct ifreq |
ARP | SIOCSARP SIOCGARP SIOCDARP |
创建/ 修改ARP 表项 获取ARP 表项 删除ARP 表项 |
struct arpreq struct arpreq struct arpreq |
路 由 |
SIOCADDRT SIOCDELRT |
增加路径 删除路径 |
struct rtentry struct rtentry |
流 | I_xxx |
#include <string.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main()
{
??????? int inet_sock;
??????? struct ifreq ifr;
??????? inet_sock = socket(AF_INET, SOCK_DGRAM, 0);
??????? strcpy(ifr.ifr_name, "eth0");
??????? //SIOCGIFADDR标志代表获取接口地址
??????? if (ioctl(inet_sock,?SIOCGIFADDR, &ifr) <? 0)
??????????????? perror("ioctl");
??????? printf("%s\n", inet_ntoa(((struct sockaddr_in*)&(ifr.ifr_addr))->sin_addr));
??????? return 0;
}
内容总结
以上是互联网集市为您收集整理的linux c函数获取系统IP地址全部内容,希望文章能够帮你解决linux c函数获取系统IP地址所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。