企业网站开发框架,not found的网站,筑巢网站后台管理系统,简述阐述网站建设的步骤过程1.题目描述
参考计算机网络教材 140 页 4.3 节内容#xff0c;编程模拟路由器查找路由表的过程#xff0c;用#xff08;目的地址 掩码 下一跳#xff09; 的 IP 路由表以及目的地址作为输入#xff0c;为目的地址查找路由表#xff0c;找出正确的下一跳并输出结果。 1.…1.题目描述
参考计算机网络教材 140 页 4.3 节内容编程模拟路由器查找路由表的过程用目的地址 掩码 下一跳 的 IP 路由表以及目的地址作为输入为目的地址查找路由表找出正确的下一跳并输出结果。 1.当目的地址为128.96.39.10时下一跳 同子网掩码255.255.255.128做与运算可得128.96.39.0 故接口m0转发 2.当目的地址为128.96.40.12 时下一跳 同子网掩码255.255.255.128做与运算可得128.96.40.0故接口R2转发 3.当目的地址为128.96.40.151 时下一跳 同子网掩码255.255.255.128做与运算可得128.96.40.128同子网掩码255.255.255.192做与运算可得128.96.40.128而此时没有目的网络故通过默认网关进行转发下一跳为R4。 4.当目的地址为192.4.153.17时下一跳 同子网掩码255.255.255.128做与运算可得 192.4.153.0 但此时子网掩码255.255.255.128中对应的目的地址没有192.4.153.0。同子网掩码255.255.255.192做运算可得192.4.153.0.故此时通过R3进行转发。 2.程序Demo 其他功能自行探索Doge 3.参考代码
//time:2024.1.4
//coder:MGJ//注意
//https://baijiahao.baidu.com/s?id1683531102064675651
//Demo题目#include iostream
#include conio.h
#include windows.h
#include vector
#include sstreamusing namespace std;
//菜单功能数量
#define MENUNUMS1 4
//路由表最大数量
#define Router_max_num 128//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//函数声明
void cls();void Init_data();int Menuchoose1();void Menushow1(int i);void Function_Select(int select);void Net_address_translation();void Net_address_add();void Net_address_delect();void Net_address_revise();void Stringsplit(string str, const char split, vectorstring res);void Net_Map_Show();//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//路由表
struct Router_Map {//目的网络地址子网掩码下一跳int Destination_network_address[4] {0};int Subnet_mask[4] {0};string Next_hop;BOOLEAN Init_Router_Map(string ip,string mask,string Next_hop){if (ipn|| maskn||Next_hopn) return false;Set_Router_Map_Destination_add(ip);Set_Router_Map_mask_add(mask);this-Next_hopNext_hop;return true;}void Set_Router_Map_Destination_add(string ip) {vectorstring strList;int num 0, i 0;Stringsplit(ip, ., strList); // 将子串存放到strList中for (auto str_num: strList) {istringstream ss(str_num);ss num;Destination_network_address[i] num;}}void Set_Router_Map_mask_add(string mask) {vectorstring strList;int num 0, i 0;Stringsplit(mask, ., strList); // 将子串存放到strList中for (auto str_num: strList) {istringstream ss(str_num);ss num;Subnet_mask[i] num;}}
};Router_Map Router_Map_Data[Router_max_num];//用来存储表
int Now_Router_Num 0;//当前的表大小
//----------------------------------------------------------------------------------
//主函数
int main() {int out 0;Init_data();while (true) {out Menuchoose1();Function_Select(out);}
}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//初始化函数
void Init_data() {//0位为默认网络/外部网络(必须有)Router_Map_Data[0].Init_Router_Map(0.0.0.0 ,255.255.255.255,R4);//下面可以自行修改添加Router_Map_Data[1].Init_Router_Map(128.96.39.0 ,255.255.255.128,接口M0);Router_Map_Data[2].Init_Router_Map(128.96.39.128,255.255.255.128,接口M1);Router_Map_Data[3].Init_Router_Map(128.96.40.0 ,255.255.255.128,R2);Router_Map_Data[4].Init_Router_Map(192.4.153.0 ,255.255.255.192,R3);Now_Router_Num 4;//1-4 输入的项数
}//选择函数
int Menuchoose1() {int ch, i 0;Menushow1(0);while (true) {if (_kbhit()) {ch _getch();if (ch 80) {//循环i (i) % MENUNUMS1;Menushow1(i);} else if (ch 72) {//循环防止出现负数i ((--i) MENUNUMS1) % MENUNUMS1;Menushow1(i);} else if (ch 13) return i 1;}}
}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//菜单显示
void Menushow1(int i) {cls();SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);cout \n * 路由器查表过程模拟 Demo*\n;if (i 0)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED);cout -查询地址去向- endl;if (i 1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED);if (i 0)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);cout -增加路由地址- endl;if (i 2)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED);if (i 1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);cout -删除路由地址- endl;if (i 3)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED);if (i 2)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);cout -修改路由地址- endl;if (i 3)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);cout -------------------------------------\n;
}//功能函数
void Function_Select(int select) {Net_Map_Show();switch (select) {case 1: {Net_address_translation();break;}case 2: {Net_address_add();break;}case 3: {Net_address_delect();break;}case 4: {Net_address_revise();break;}}system(pause);system(cls);
}
void Net_Map_Show() {cout \t序号\t目的地址\t\t掩码\t\t下一跳 endl;for (int i 0; i Now_Router_Num; i) {cout \t i\t;for (int j 0; j 4; j) {cout Router_Map_Data[i].Destination_network_address[j];j ! 3 ? cout . : cout \t;}for (int j 0; j 4; j) {cout Router_Map_Data[i].Subnet_mask[j];j ! 3 ? cout . : cout \t\t;}cout Router_Map_Data[i].Next_hop endl;}
}
void Net_address_translation() {int Input_Destination[4] {0};int Get_Destination[4] {0};int Cal_num 0;int Find_Local 0;cout \n请输入查询的目的地址(如:128.96.39.10):;scanf(%d.%d.%d.%d, Input_Destination[0], Input_Destination[1], Input_Destination[2], Input_Destination[3]);for (int i 1; i Now_Router_Num; i) {Cal_num 0;for (int j 0; j 4; j) {Get_Destination[j] Router_Map_Data[i].Subnet_mask[j] Input_Destination[j];Cal_num Cal_num (Router_Map_Data[i].Destination_network_address[j] - Get_Destination[j]);}if (Cal_num 0) {Find_Local i;break;}}cout endl ------------------------------------------- endl;cout 计算出的目的地址为:;for (int j 0; j 4; j) {cout Get_Destination[j];j ! 3 ? cout . : cout \n;}cout 下一跳为: Router_Map_Data[Find_Local].Next_hop endl;cout ------------------------------------------- endl;
}void Net_address_add() {string input_Destination;string input_Subnet_mask;string input_Next_hop;cout endl -------------(输入n可取消当前操作)------------- endl;cout 请输入需要添加的目的网络:,cininput_Destination;cout 请输入需要添加的网络掩码:,cininput_Subnet_mask;cout 请输入需要添加的下一跳:,cininput_Next_hop;cout endl ------------------------------------------- endl;if(Router_Map_Data[Now_Router_Num1].Init_Router_Map(input_Destination,input_Subnet_mask,input_Next_hop))Now_Router_Num;
}void Net_address_delect() {cout * 不想开发数组的删除与移动捏doge), 请尝试修改吧 endl;
}void Net_address_revise() {string input_Destination;string input_Subnet_mask;string input_Next_hop;int input_num;cout endl -------------(输入n可取消当前操作)------------- endl;cout 请输入需要修改的项序号(0-Now_Router_Num):,cininput_num;cout 请输入修改的目的网络:,cininput_Destination;cout 请输入修改的网络掩码:,cininput_Subnet_mask;cout 请输入修改的下一跳:,cininput_Next_hop;cout ------------------------------------------- endl;Router_Map_Data[input_num].Init_Router_Map(input_Destination,input_Subnet_mask,input_Next_hop);
}//清屏函数
void cls() {COORD pos;HANDLE hOut GetStdHandle(STD_OUTPUT_HANDLE);pos.Y pos.X 0;SetConsoleCursorPosition(hOut, pos);
}//Stringsplit
void Stringsplit(string str, const char split, vectorstring res) {istringstream iss(str); // 输入流string token; // 接收缓冲区while (getline(iss, token, split)) // 以split为分隔符{res.push_back(token);}
} 点个关注吧哈哈 2024 HNUST计算机网络课程设计-(ᕑᗢᓫ∗)˒芒果酱-参考文章 代码可以参考૮₍ ˃ ⤙ ˂ ₎ა 但同学们要认真编写哦 ------------------------------------------------------------------------- 1、网络聊天程序的设计与实现C Socket 多线程 网络聊天室 支持用户端双向交流(2023)-CSDN博客 2、Tracert 与 Ping 程序设计与实现Tracert 与 Ping 程序设计与实现2024-CSDN博客 3、滑动窗口协议仿真滑动窗口协议仿真2024-CSDN博客 4、OSPF 路由协议原型系统设计与实现OSPF 路由协议原型系统设计与实现-CSDN博客 5、基于 IP 多播的网络会议程序基于 IP 多播的网络会议程序2024-CSDN博客 6、编程模拟 NAT 网络地址转换编程模拟 NAT 网络地址转换(2024)-CSDN博客 7、网络嗅探器的设计与实现网络嗅探器的设计与实现(2024)-转载-CSDN博客 8、网络报文分析程序的设计与实现网络报文分析程序的设计与实现2024-CSDN博客 9、简单 Web Server 程序的设计与实现简单 Web Server 程序的设计与实现 (2024)-CSDN博客 10、路由器查表过程模拟 计算机网络 - 路由器查表过程模拟 C(2024)-CSDN博客