模擬實現透明網橋的自學習與過濾功能
實驗內容:
看了實驗內容之後,重新溫習了書中網橋自學習的知識點。梳理網橋自學習演算法的流程。試驗中用於網橋測試其學習和過濾功能的網路結構如下:
① 當 a 向 b 傳送幀時,網橋 b1 會先按源位址 a 查詢**表。如果在網橋 b1 中沒有 a 的位址,於是會把 a 和收到此幀的藉口 1 寫入**表。接著再按目的位址 b 查詢**表,**表中沒有 b 的位址,就會把 b 用另乙個介面 2 **出去。網橋 b2 收到這個發過來的幀。
② 對於網橋 b2 按同樣的方式處理收到的幀。網橋 2 的**表中沒有 a 的位址,因此會在**表中寫入位址 a 和介面 1. 網橋 b2 的**表中沒有 b 的位址,因此網橋 2 通過介面 4 傳送此幀。
③ b 向 a 傳送幀 網橋 b1 會從其介面 1 收到該幀。同理,網橋 b1 的**表中沒有 b, 則會把源位址 b 和介面 1 寫入**表。而對於目的位址 a,網橋 b1 的**表中存在 a,**介面也是 1,網橋 b1 會把次幀丟棄。
實現 實驗採用 c 語言實現,採用二維陣列來表示網橋的**表。
**實現如下:
#include
void main()
; char arr2[2]=;
char arr3[3]=;
int a[2]=;
int b[2]=;
int i,j,m,n,k1 = 0,k2 = 0,t=0;
char s,d,k;
while(1)
for(i=0;i<2;i++)
for(i=0;i<3;i++)
switch(m)
} if(i==k1) //沒有記錄,在網橋陣列中插入源位址
for(i=0;i//查詢網橋陣列中是否有目的位址
} if(i==k1) printf("網橋1中沒有目的記錄%c,向右**\n",d);//不含有,**
else
//含有且在同在網段丟棄
else
printf("不在同一網段,網橋1向右**\n");//含有不在同一網段**
} if(t!=1) //不在同一網段時
if(i==k1) //沒有記錄,在網橋陣列中插入源位址
for(i=0;i//查詢網橋陣列中是否有目的位址
} if(i==k2) printf("網橋2中沒有目的記錄%c,向右**\n",d);//不含有,**
else
} break;
} case
2:
if(i==k1) //沒有記錄,在網橋陣列中插入源位址
for(i=0;i//查詢網橋陣列中是否有目的位址
} if(i==k1) printf("網橋1中沒有目的記錄%c,向左**\n",d);//不含有,**
else
//向右**
for(i=0;iif(b[i][0]==s)
if(i==k2) //沒有記錄,在網橋陣列中插入源位址
for(i=0;i//查詢網橋陣列中是否有目的位址
} if(i==k2) printf("網橋2中沒有目的記錄%c,向右**\n",d);//不含有,**
else
break;
} case
3:
if(i==k2) //沒有記錄,在網橋陣列中插入源位址
for(i=0;i//查詢網橋陣列中是否有目的位址
} if(i==k2) printf("網橋2中沒有目的記錄,向左**\n");//不含有,**
else
//含有且在同在網段丟棄
else
printf("不在同一網段,網橋2向左**\n");//含有不在同一網段**
} if(t!=1)//不在同一網段時
if(i==k1) //木有記錄,在網橋陣列中插入源位址
for(i=0;i//查詢網橋陣列中是否有目的位址
} if(i==k1) printf("網橋1中沒有目的記錄%c,向左**\n",d);//不含有,**
else
} break;
} default: ;
} putchar('\n');
printf("網橋1\n");
printf("--------\n");
for(i=0;iprintf(" %c ",a[i][0]);
printf("%d ",a[i][1]);
putchar('\n');
} printf("--------\n");
printf("網橋2\n");
printf("--------\n");
for(i=0;iprintf(" %c ",b[i][0]);
printf("%d ",b[i][1]);
putchar('\n');
} printf("-------\n");
scanf("%c",&k);
} }
C語言模擬實現C 的繼承與多型
一 面向過程程式設計與物件導向程式設計的區別 眾所周知,c語言是一種典型的面向過程程式語言,而c 確實在它的基礎上改進的一款物件導向程式設計語言,那麼,面向過程與物件導向到底有什麼樣的區別呢?從設計方法角度看 面向過程程式設計方法採用函式 或過程 來描述對資料的操作,但又將函式與其操作的資料分離開來...
C語言模擬實現C 的繼承與多型
一 面向過程程式設計與物件導向程式設計的區別 眾所周知,c語言是一種典型的面向過程程式語言,而c 確實在它的基礎上改進的一款物件導向程式設計語言,那麼,面向過程與物件導向到底有什麼樣的區別呢?從設計方法角度看 面向過程程式設計方法採用函式 或過程 來描述對資料的操作,但又將函式與其操作的資料分離開來...
C語言模擬實現C 的繼承與多型示例
一 面向過程程式設計與物件導向程式設計的區別 眾所周知,c語言是一種典型的面向過程程式語言,而c 確實在它的基礎上改進的一款物件導向程式設計語言,那麼,面向過程與物件導向到底有什麼樣的區別呢?從設計方法角度看 面向過程程式設計方法採用函式 或過程 來描述對資料的操作,但又將函式與其操作的資料分離開來...