资源简介
只支持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
相关资源
- uboot到linux logo显示不间断 补丁
- UNIX/LINUX编程实践教程的源码
- Linux任务管理器
- linux应用层的华容道游戏源代码
- ubuntu9.10 可加载内核模块和字符设备驱
- MP3文件ID3v2ID3v2APEv2标签读取
- 操作系统实验——虚存管理实验
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
- linux C 电梯程序练习
- linux下用多进程同步方法解决生产者
- 用VC 编写的基于SNMP的路由器拓扑程序
- Linux 操作系统实验(全)
- Linux From Scratch 中文手册
- linux 网络实验 ftp程序
- (思科华为)路由器配置实例--各10
- Linux命令大全离线版&在线版
- 操作系统共享内存实验
- dos 下运行Linux 命令--gnu_utils
- linux 0.12内核源代码
- linux简易shell C实现
- linux实验报告及心得体会
- 基于GTK的Linux环境下的简易任务管理器
- linux扫雷游戏代码
- CAN Linux驱动代码
- Linux系统教材
- CISCO路由器配置手册(CHM)
-
D-li
nk DI-634M无线路由器
评论
共有 条评论