c/c++ 网络编程 UDP 主机网络信息取得
网络编程 UDP 主机网络信息取得
1,if_nametoindex 通过网卡名字取得网卡编号
2,if_indextoname 通过网卡编号取得网卡名字
#include <stdio.h>
#include <string.h>
#include <net/if.h>
int main(){
int index;
char buf[128];
//根据名字取得编号
index = if_nametoindex("enp0s3");
if(index == 0){
perror("if_nametoindex");
return 1;
}
printf("index:%d\n", index);
memset(buf, 0, sizeof(buf));
//根据编号取得名字
if(if_indextoname(index, buf) == NULL){
perror("if_indextoname");
return 1;
}
printf("name:%s\n", buf);
return 0;
}
3,getifaddrs 取得网卡的名字,取得网卡的flags,取得IP地址,取得netmask
#include <stdio.h>
#include <string.h>
#include <ifaddrs.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(){
ifaddrs *ifa_list;
ifaddrs *ifa;
int n;
char addrstr[256], netmaskstr[256];
n = getifaddrs(&ifa_list);
if(n != 0){
return 1;
}
for(ifa = ifa_list; ifa != NULL; ifa = ifa->ifa_next){
printf("ifa_name:%s\n", ifa->ifa_name);
printf("ifa_flags: 0x%.8x\n", ifa->ifa_flags);
memset(addrstr, 0, sizeof(addrstr));
memset(netmaskstr, 0, sizeof(netmaskstr));
//IPv4
if(ifa->ifa_addr->sa_family == AF_INET){
//IP
inet_ntop(AF_INET,
&((sockaddr_in*)ifa->ifa_addr)->sin_addr,
addrstr, sizeof(addrstr));
//mask
inet_ntop(AF_INET,
&((sockaddr_in*)ifa->ifa_netmask)->sin_addr,
netmaskstr, sizeof(netmaskstr));
printf(" IPv4: %s netmask : %s\n", addrstr, netmaskstr);
}
//IPv6
else if(ifa->ifa_addr->sa_family == AF_INET6){
//IP
inet_ntop(AF_INET6,
&((sockaddr_in6*)ifa->ifa_addr)->sin6_addr,
addrstr, sizeof(addrstr));
//mask
inet_ntop(AF_INET6,
&((sockaddr_in6*)ifa->ifa_netmask)->sin6_addr,
netmaskstr, sizeof(netmaskstr));
printf(" IPv6: %s netmask : %s\n", addrstr, netmaskstr);
}
else if(ifa->ifa_addr->sa_family == AF_PACKET){
printf(" af_packet:%d\n", ifa->ifa_addr->sa_family);
}
else{
printf(" else:%d\n", ifa->ifa_addr->sa_family);
}
printf("\n");
}
freeifaddrs(ifa_list);
return 0;
}
c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854
c/c++ 网络编程 UDP 主机网络信息取得的更多相关文章
- c/c++ 网络编程 UDP 用if_nameindex和ioctl取得主机网络信息
网络编程 UDP 用if_nameindex和ioctl取得主机网络信息 getifaddrs函数取得的东西太多了,如果只想取得网卡名字和网卡编号可以用下面的2个函数. 1,if_nameindex ...
- c/c++ 网络编程 UDP 改变IP地址
网络编程 UDP 改变IP地址 在程序里动态改变主机的IP地址 1,改变ipv4的地址 #include <stdio.h> #include <string.h> #incl ...
- Socket网络编程-UDP编程
Socket网络编程-UDP编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.UDP编程概述 1>.UDP服务端编程流程 创建socket对象.socket.SOCK_ ...
- c/c++ 网络编程 UDP 设定MTU
网络编程 UDP 设定MTU MTU(Maximun Transmisson Unit):一次送信的最大size. 在程序里动态改变MTU.注意:程序运行需要root权限. 程序运行的方法: sudo ...
- c/c++ 网络编程 UDP up/down 网卡
网络编程 UDP up/down 网卡 在程序里动态改变网卡的状态.注意:程序运行需要root权限. 程序运行的方法: sudo ./a.out 1,关闭网卡 #include <stdio.h ...
- c/c++ 网络编程 UDP 改变网关和网卡名字
网络编程 UDP 改变网关和网卡名字 在程序里动态改变网关和网卡名字 1,改变网卡名字 #include <stdio.h> #include <string.h> #incl ...
- c/c++ 网络编程 UDP 改变网卡的硬件地址
网络编程 UDP 改变网卡的硬件地址 在程序里动态改变网卡的硬件地址 1,取得网卡的硬件地址 #include <stdio.h> #include <string.h> #i ...
- c/c++ 网络编程 UDP 发送端 bind 作用
网络编程 UDP 发送端 bind 作用 upd 发送端 调用bind函数的效果:把socket特定到一个指定的端口,如果不调用bind,内核会随机分配一个端口. upd 发送端 调用bind函数的目 ...
- Python3 与 C# 网络编程之~ 网络基础篇
最新版本查看:https://www.cnblogs.com/dotnetcrazy/p/9919202.html 入门篇 官方文档:https://docs.python.org/3/library ...
随机推荐
- python glob的安装和使用
基本概念 glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,类似于Windows下的文件搜索,支持通配符操作.*,?,[]这三个通配符,*代表0个或多个字符,?代表一 ...
- Unable to preventDefault inside passive event listener due to target being treated as passive
Unable to preventDefault inside passive event listener due to target being treated as passive 今天在做项目 ...
- 快速搭建WebAPI(Odata+Code-First)附Odata条件查询表~
Odata是什么? 开放数据协议(Open Data Protocol,缩写OData)是一种描述如何创建和访问Restful服务的OASIS标准.该标准由微软发起,前三个版本1.0.2.0.3.0都 ...
- Android--逐帧动画FrameAnimation
前言 开门见山,本篇博客讲解一下如何在Android平台下播放一个逐帧动画.逐帧动画在Android下可以通过代码和XML文件两种方式定义,本篇博客都将讲到,最后将以一个简单的Demo来演示两种方式定 ...
- ASP.NET Core DI 手动获取注入对象
ASP.NET Core DI 一般使用构造函数注入获取对象,比如在ConfigureServices配置注入后,通过下面方式获取: private IValueService _valueServi ...
- springboot+springcloud集成jar
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 【面试】我是如何面试别人List相关知识的,深度有点长文
- Spring Boot(五):Spring Boot Jpa 的使用
在上篇文章Spring Boot(二):Web 综合开发中简单介绍了一下 Spring Boot Jpa 的基础性使用,这篇文章将更加全面的介绍 Spring Boot Jpa 常见用法以及注意事项. ...
- [四] java8 函数式编程 收集器浅析 收集器Collector常用方法 运行原理 内部实现
Collector常见用法 常用形式为: .collect(Collectors.toList()) collect()是Stream的方法 Collectors 是收集器Collect ...
- spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例
下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...