文档介绍:路由分组转发算法的模拟C++
计算机网络作业
教材P128所述的分组转发算法如下:
从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。
若网络N与此路由器直接相连,则把数据报直接交付目的主机D;否则是间接交付,执行(3)制形式显示 IP 地址,子网掩码
{
cout<<part1<<".";
cout<<part2<<".";
cout<<part3<<".";
cout<<part4<<endl;
}
class C //定义 C 类用于设定路由表中和项
{
public:
void setDEST(int p1,int p2,int p3,int p4);
void setSUBNET_MASK(int a1,int a2,int a3,int a4);
A DEST; //DEST 为目的主机地址,类型为 A
A SUBNET_MASK; // 子网掩码,类型为 A
};
void C::setDEST(int p1,int p2,int p3,int p4)
{
=p1;
=p2;
=p3;
=p4;
}
void C::setSUBNET_MASK(int a1,int a2,int a3,int a4)
{
=a1;
=a2;
=a3;
=a4;
}
void AND(B IP,C subnet_mask) //AND 函数用于将 IP 地址和子网掩码遂位相“与”等到相应的子网号
A SUB=;
=&;
=&;
=&;
=&;
}
int main()
{
C c[3];
c[0].setDEST(0,0,0,0); //为相应的路由表项赋值
c[0].setSUBNET_MASK(255,255,0,0);
c[1].setDEST(145,13,3,10);
c[1].setSUBNET_MASK(255,255,255,255);
c[2].setDEST(145,13,0,0);
c[2].setSUBNET_MASK(255,255,0,0);
coutvv"输入目的主机IP地址D: "<<endl;
();
coutvv"开始路由选择! "vvendl;
coutvv"目的主机IP地址D为:";
();
int flag=1; //定义一个标志,用于差别是否已经找到了相应的路由表项
for(int i=0;iv3;i++)
{
AND(D,c[i]);
if(==c[i].&&==c