資源簡介
只支持linux操作系統,內附路由器框架圖和說明文檔,按照文檔操作沒多大問題

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?“get_interface.h“
int?interface_num=0;//接口數量
INTERFACE?net_interface[MAXINTERFACES];//接口數據
/******************************************************************
函 數: int?get_interface_num()
功 能: 獲取接口數量
參 數: 無
*******************************************************************/
int?get_interface_num(){
return?interface_num;
}
/******************************************************************
函 數: int?getinterface()
功 能: 獲取接口信息
參 數: 無
*******************************************************************/
void?getinterface(){
struct?ifreq?buf[MAXINTERFACES];????/*?ifreq結構數組?*/
struct?ifconf?ifc;??????????????????/*?ifconf結構?*/
int?sock_raw_fd?=?socket(PF_PACKET?SOCK_RAW?htons(ETH_P_ALL));
?/*?初始化ifconf結構?*/
????ifc.ifc_len?=?sizeof(buf);
????ifc.ifc_buf?=?(caddr_t)?buf;
?
????/*?獲得接口列表?*/
????if?(ioctl(sock_raw_fd?SIOCGIFCONF?(char?*)?&ifc)?==?-1){
????????perror(“SIOCGIFCONF?ioctl“);
????????return?;
????}
????interface_num?=?ifc.ifc_len?/?sizeof(struct?ifreq);?/*?接口數量?*/
????printf(“interface_num=%d\n\n“?interface_num);
? char?buff[20]=““;
int?ip;
int?if_len?=?interface_num;
????while?(if_len--?>?0){?/*?遍歷每個接口?*/
????????printf(“%s\n“?buf[if_len].ifr_name);?/*?接口名稱?*/
????????sprintf(net_interface[if_len].name?“%s“?buf[if_len].ifr_name);?/*?接口名稱?*/
printf(“-%d-%s--\n“if_lennet_interface[if_len].name);
????????/*?獲得接口標志?*/
????????if?(!(ioctl(sock_raw_fd?SIOCGIFFLAGS?(char?*)?&buf[if_len]))){
????????????/*?接口狀態?*/
????????????if?(buf[if_len].ifr_flags?&?IFF_UP){
????????????????printf(“UP\n“);
net_interface[if_len].flag?=?1;
????????????}
????????????else{
????????????????printf(“DOWN\n“);
net_interface[if_len].flag?=?0;
????????????}
????????}else{
????????????char?str[256];
????????????sprintf(str?“SIOCGIFFLAGS?ioctl?%s“?buf[if_len].ifr_name);
????????????perror(str);
????????}
?
????????/*?IP地址?*/
????????if?(!(ioctl(sock_raw_fd?SIOCGIFADDR?(char?*)?&buf[if_len]))){
printf(“IP:%s\n“(char*)inet_ntoa(((struct?sockaddr_in*)?(&buf[if_len].ifr_addr))->sin_addr));
bzero(buffsizeof(buff));
sprintf(buff?“%s“?(char*)inet_ntoa(((struct?sockaddr_in*)?(&buf[if_len].ifr_addr))->sin_addr));
inet_pton(AF_INET?buff?&ip);
memcpy(net_interface[if_len].ip?&ip?4);
}else{
????????????char?str[256];
????????????sprintf(str?“SIOCGIFADDR?ioctl?%s“?buf[if_len].ifr_name);
????????????perror(str);
????????}
?
????????/*?子網掩碼?*/
????????if?(!(ioctl(sock_raw_fd?SIOCGIFNETMASK?(char?*)?&buf[if_len]))){
????????????printf(“netmask:%s\n“(char*)inet_ntoa(((struct?sockaddr_in*)?(&buf[if_len].ifr_addr))->sin_addr));
bzero(buffsizeof(buff));
sprintf(buff?“%s“?(char*)inet
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-11-01?15:25??簡易路由器-demo\
?????文件???????15872??2018-11-01?15:22??簡易路由器-demo\BUG_LIST.wps
?????目錄???????????0??2018-11-01?15:22??簡易路由器-demo\getinterface\
?????文件????????4769??2018-11-01?15:22??簡易路由器-demo\getinterface\get_interface.c
?????文件?????????876??2018-11-01?15:22??簡易路由器-demo\getinterface\get_interface.h
?????文件?????????131??2018-11-01?15:22??簡易路由器-demo\getinterface\建議.txt
?????目錄???????????0??2018-11-01?15:23??簡易路由器-demo\V1.2\
?????文件????????2207??2018-11-01?15:23??簡易路由器-demo\V1.2\arp_li
?????文件????????1556??2018-11-01?15:23??簡易路由器-demo\V1.2\arp_li
?????文件?????????535??2018-11-01?15:22??簡易路由器-demo\V1.2\arp_pthread.c
?????文件?????????324??2018-11-01?15:22??簡易路由器-demo\V1.2\arp_pthread.h
?????文件????????4769??2018-11-01?15:22??簡易路由器-demo\V1.2\get_interface.c
?????文件?????????876??2018-11-01?15:22??簡易路由器-demo\V1.2\get_interface.h
?????文件??????????26??2018-11-01?15:22??簡易路由器-demo\V1.2\ip_config
?????文件????????4196??2018-11-01?15:22??簡易路由器-demo\V1.2\ip_li
?????文件????????2403??2018-11-01?15:22??簡易路由器-demo\V1.2\ip_li
?????文件????????5063??2018-11-01?15:22??簡易路由器-demo\V1.2\ip_pthread.c
?????文件?????????394??2018-11-01?15:22??簡易路由器-demo\V1.2\ip_pthread.h
?????文件????????4060??2018-11-01?15:22??簡易路由器-demo\V1.2\key_pthread.c
?????文件?????????315??2018-11-01?15:22??簡易路由器-demo\V1.2\key_pthread.h
?????文件????????2215??2018-11-01?15:22??簡易路由器-demo\V1.2\main.c
?????文件?????????178??2018-11-01?15:22??簡易路由器-demo\V1.2\main.h
?????文件?????????291??2018-11-01?15:23??簡易路由器-demo\V1.2\Makefile
?????文件?????????305??2018-11-01?15:22??簡易路由器-demo\V1.2\說明.txt
?????文件???????53343??2018-11-01?15:22??簡易路由器-demo\流程圖.pdf
?????目錄???????????0??2018-11-01?15:22??簡易路由器-demo\演示\
?????文件????????4008??2018-11-01?15:22??簡易路由器-demo\演示\Linux下配置ip.txt
?????文件??????????32??2018-11-01?15:22??簡易路由器-demo\演示\演示.txt
評論
共有 條評論