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 ...
随机推荐
- Git漏洞允许任意代码执行(CVE-2018-17456)复现
Git漏洞允许任意代码执行(CVE-2018-17456) 国外安全研究员 joernchen 在 9 月 23 日向 git 官方报告了漏洞的相关细节.10月5日,Git项目披露了一个漏洞,编号为C ...
- 记一次尴尬的git reset丢失分支故障
最近...似乎一直在踩坑... 也不是什么故障,只是把一个分支的功能弄没了,之后在reflog里找到又恢复了. 产生原因是有同事错误地把分支B merge到了分支A并push. 我直接在分支A上res ...
- nfs服务启动失败:Failed to start NFS status monitor for NFSv2/3 locking..
今天碰到个问题,服务器重启后,nfs服务就启动不了了,关闭都关不了.查看系统日志报下面的错: Aug 10 17:08:53 prod-r3-slt-s-01 systemd: Started Pre ...
- 【译】如何高效的使用 Git
原文链接 代码昨天还是运行好好的今天就不行了. 代码被删了. 突然出现了一个奇怪的 bug,但是没人知道怎么回事. 如果你出现过上面的任何一种情况,那本篇文章就是为你准备的. 除了知道 git add ...
- vue踩坑--TypeError: __WEBPACK_IMPORTED_MODULE_1_vuex__.a.store is not a constructor
今天在使用vuex的时候遇到这么个问题,虽然后来解决了,是首字母大写的原因,但我还是不知道为什么.这里先记录下来. 这是vuex/store.js import Vue from 'vue' impo ...
- 利用Python爬去囧网福利(多线程、urllib、request)
import os; import urllib.request; import re; import threading;# 多线程 from urllib.error import URLErro ...
- 【WCF系列】(四)WCF客户端怎么消费服务
WCF客户端怎么消费服务 获取服务绑定协议.绑定和地址:实现方式 SvcUtil方式:SvcUtil.exe是一个命令行工具,位于:C:\Program Files (x86)\Microsoft S ...
- 线程组ThreadGroup分析详解 多线程中篇(三)
线程组,顾名思义,就是线程的组,逻辑类似项目组,用于管理项目成员,线程组就是用来管理线程. 每个线程都会有一个线程组,如果没有设置将会有些默认的初始化设置 而在java中线程组则是使用类ThreadG ...
- [VsCode] 开发所使用的VsCode的插件
vscode 的插件 必须 Chinese (Simplified) Language Pack for Visual Studio Code Markdown Preview Enhanced De ...
- Android项目刮刮奖详解(三)
Android项目刮刮奖详解(二) 前言 上一期我们已经实现了一个简易的刮刮卡功能,这一期我们来将其完善一下 目标 将刮刮奖的宽高改为合适高度 将刮刮奖位置居中 将信息层的图片换成文字(重点) 实现 ...