路由表转发算法

    技术2022-05-20  34

    #include<iostream>

    #include<stdio.h> 

    #include<string>

    using namespace std;

    struct p

    {

    unsigned char a;

    unsigned char b;

    unsigned char c;

    unsigned char d;

    }ip;

    struct a

    {

    struct p p1;//目的网络 

    struct p p2;//子网掩码 

    char s[30];// 下一跳 

    };

     

     

    int main()

    {

    int i;

    struct p x;

    struct a record[5];

     

    record[0].p1.a=128;

    record[0].p1.b=96;

    record[0].p1.c=39; 

    record[0].p1.d=0;

    record[0].p2.a=255;

    record[0].p2.b=255;

    record[0].p2.c=255;

    record[0].p2.d=128;

    strcpy(record[0].s,"接口m0");

    record[1].p1.a=128;

    record[1].p1.b=96;

    record[1].p1.c=39;

    record[1].p1.d=128;

    record[1].p2.a=255;

    record[1].p2.b=255;

    record[1].p2.c=255;

    record[1].p2.d=128;

    strcpy(record[1].s,"接口m1");

    record[2].p1.a=128;

    record[2].p1.b=96;

    record[2].p1.c=40;

    record[2].p1.d=0;

    record[2].p2.a=255;

    record[2].p2.b=255;

    record[2].p2.c=255;

    record[2].p2.d=128;

    strcpy(record[2].s,"R2");

    record[3].p1.a=192;

    record[3].p1.b=4;

    record[3].p1.c=153;

    record[3].p1.d=0;

    record[3].p2.a=255;

    record[3].p2.b=255;

    record[3].p2.c=255;

    record[3].p2.d=192;

    strcpy(record[3].s,"R3");

    record[4].p1.a=0;

    record[4].p1.b=0;

    record[4].p1.c=0;

    record[4].p1.d=0;

    record[4].p2.a=0;

    record[4].p2.b=0;

    record[4].p2.c=0;

    record[4].p2.d=0;

    strcpy(record[4].s,"R4");//默认路由

     

    scanf("%d.%d.%d.%d",&x.a,&x.b,&x.c,&x.d);

     

     

     

    for( i=0;i<=3;i++)

    {

    if(((x.a&record[i].p2.a)==record[i].p1.a)&&((x.b&record[i].p2.b)==record[i].p1.b)&&((x.c&record[i].p2.c)==record[i].p1.c)&&

    ((x.d&record[i].p2.d)==record[i].p1.d))

     

     {printf("%s/n",record[i].s);

     break;

     }

    }

          if(i==4)

     {printf("%s/n",record[4].s);

     }

    return 1;

    }


    最新回复(0)