资源简介
只支持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
相关资源
- 剖析Linux系统下基于NUMA构建的服务
- XBee路由器产品介绍
- Hillstone SR-550高性能安全路由器产品手
- Hillstone SR-560高性能安全路由器产品手
- Hillstone SR-320高性能安全路由器产品手
- 智能路由器怎么了?为何退潮
- linux SPI设备注册和驱动小结
- 周立功PCI CAN卡LINUX驱动ubuntu16.04内核
- 实现Windows与Linux两系统间自由切换
- 在双引导Linux系统上实现OS自动切换
- 如何删除Linux系统后找回Windows的启动
- 如何解决灰尘“惹祸”导致路由
- Linux命令详解,循序渐进Linux
- Linux系统文件命令精通指南(下)
- Linux系统命令及Shell脚本实践指南
- RK3308 LINUX开发者指南(1).pdf
- S3C4510 开发板中uCLinux系统开发
- 嵌入式操作系统的解析
- Linux点阵字库和字库生成器.rar
- Linux-UNIX系统编程手册上、下册中文版
- 基于ARM的电子相册源码含动态库可运
- PSFTP.EXE 工具
- 如何实现Linux与windows文件互传
- Linux内核函数Start_kernel()的功能
- 一只老鸟的嵌入式ARM学习心得
- cximage的linux版本源码
- yaf-2.1.17.tgz
- IBM System Storage SAN04B-R多协议路由器安
- IBM eServer xSeries 445 EXP400在Linux下的双
- 如何在本地无光驱软驱时通过PXE远程
评论
共有 条评论