国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

路由模擬——類設計的聲明部分

2024-07-21 02:16:28
字體:
來源:轉載
供稿:網友
一, 全局名空間
路由模擬系統中所有全局變量與函數皆實現在一個名空間中。


名空間:netsource
名空間內變量:
#define null 0
//網絡設備類型表
enum netelementtype{fiber=1,centralrout};
//路由ip地址長度
const int ip_address_length=32;
//路由表最大長度
const int max_rout_table_size=100;
//路由器端口最大數據包容量
const int max_data_queue_length=20;
名空間內函數:
//判斷兩個ip地址是否相等
bool addrequal(const unsigned int * addr1,const unsigned int * addr2);

二,類設計
路由模擬系統的類根據前文檔類圖設計。所有類的構造函數與析構函數接口說明略。

1, 網絡元素
類名: netelement
類的性質: 純虛基類
父類: 無
類的主要屬性:
// 網絡設備的類型
< protected > netelementtype netelementtype;
類的主要接口:
// 獲得網絡設備的類型
< public > virtual netelementtype gettype(void) = 0;

2, 網絡線路
類名: absline
類的性質: 純虛基類
父類: 公有繼承netelement
類的主要屬性:
繼承屬性略;

// 網絡線路的長度
< protected > int length;
類的主要接口:
< public > virtual void setlength(int _length) = 0;
< public > virtual int getlength(void) = 0;

3, 光纖
類名: fiber
類的性質: 可實例化子類
父類: 公有繼承absline
類的主要屬性:
繼承屬性略;
類的主要接口:
// 獲得網絡設備的類型
< public > netelementtype gettype(void);
// 設置線路物理長度
< public > virtual void setlength(int _length);
// 獲得線路物理長度
< public > virtual int getlength(void);

4, 路由器
類名: absrout
類的性質: 純虛基類
父類: 公有繼承netelement
類的主要屬性:
繼承屬性略;
// 路由器自身地址
< protected > int selfaddress[ip_address_length];
// 路由表
< protected > table routtable;
//當前ip數據包
< protected > netdata currtpdata;
//數據端口
< protected > std::list <netdata> datainlist;
< protected > std::list <netdata> dataoutlist;
< protected > std::list <netdata>::iterator dataiter;
//當前數據端口數據量
< protected > int datalistlength;
類的主要接口:
// 路由器發送數據至端口
< protected > virtual void senddata(void) = 0;
// 路由器從端口接收數據
< protected > virtual void receivedata(void) = 0;
// 網絡向路由器端口寫數據
< public > virtual bool netwritedata(netdata & _netdata) = 0;
// 網絡從路由器端口接收數據
< public > virtual netdata * netreaddata() = 0;
// 設置路由表
< public > virtual void setrouttable(void);
//路由計算:函數指針
< protected > void (*routcompute)(int **_netarray,int **_valarray,
int **&result,int routnum,int index);
// 對當前數據包進行路由計算
< protected > void dataroutcompute(void);
//設置路由計算方法
< public > void setcomputemethods(void _routcompute(int **,int **,
int **&,int,int));
// 設置自身地址
< public > virtual void setselfaddress(
unsigned int addr[ip_address_length]);
// 獲得自身地址
< public > virtual unsigned int * getselfaddress(void);
// 空
< public > virtual void setnetinfor(int ** _netarray, int ** valarray,
int _routnum);
// 產生數據
< public > void makedata(netdata & netdata);
5, 中心路由器
類名: centralrout
類的性質: 可實例化子類
父類: 公有繼承absrout
類的主要屬性:
繼承屬性略;
//網絡信息
< private > int **netarray,**valarray;
//發送數據包跟蹤器
< private > double id;
類的主要接口:
// 獲得設備類型
< public > virtual netelementtype gettype(void);
//網絡向端口發送數據
< public > virtual bool netwritedata(netdata & _netdata);
// 網絡從路由器端口接收數據
< public > virtual netdata * netreaddata();
// 設置路由表
< public > virtual void setrouttable(void);
//洪泛過程獲得網絡信息
< public > virtual void setnetinfor(int ** _netarray, int ** _valarray,int _routnum);
// 路由器向端口發送數據
< protected > virtual void senddata(void);
// 路由器從端口接收數據
< protected > virtual void receivedata(void);

6, 網絡結點
類名: netnode
類的性質: 可實例化類
父類: 無
類的主要屬性:
// 路由器
< public > absrout *prout;
// 網絡線路
< public > absline *pline;

< public > netnode *pnextnode;
類的主要接口:


7, 網絡
類名: net
類的性質: 可實例化類
父類: 無
類的主要屬性:
// 網絡中路由器個數
< private > int routnum;
//網絡中網絡線路個數
< private > int linenum;
// 網絡的數據結構:鄰接表
< private > netnode *pnodearray;
//網絡的相鄰矩陣和耗散矩陣
< private > int ** netarray;
< private > int ** valarray;
//路由器的類型向量
< private > netelementtype * routtypes;
//網絡線路的類型向量
< private > netelementtype * linetypes;
//網絡初建
< private > static bool first;
類的主要接口:
// 創建空網絡
< public > void create(int _routnum);
// 創建主干網絡
< public > void create(int ** _netarray, int ** _valarray, int _routnum);
// 創建任意類型網絡
< public > void create(int ** _netarray, int ** _valarray, int _routnum,int _linenum, netelementtype * r, netelementtype * l);
// 獲得網絡信息
< private > void getnetinfor(void);
// 判斷網絡是否發生改變
< private > bool ischanged(void);
// 釋放資源
< private > void clear(void);
// 創建網絡
< public > void recreate(void);
// 據地址獲得路由器序列的下標
< public > int getroutid(unsigned int addr[ip_address_length]);
//獲得pnodearray
< public > netnode *& getpnodearray();
// 產生網絡傳輸的數據包
< public > int makedata(void);
// 產生網絡傳輸的數據包
< public > int makedata(netdata &_ipdata);
// 路由計算的建立
< public > void routcomputebuilder(void);

8, 路由表結點
類名: tablenode
類的性質: 可實例化類
父類: 無
類的主要屬性:
// 目標地址
< public > unsigned int addressto[ip_address_length];
// 下一個中繼路由地址
< public > unsigned int addressnexthop[ip_address_length];
類的主要接口:
// 設置目標地址
< public > void setaddressto(unsigned int _addressto[ip_address_length]);
// 設置下一個中繼路由地址
< public > void setaddressnexthop(unsigned int
_addressnexthop[ip_address_length]);

9, 路由表
類名: table
類的性質: 可實例化類
父類: 無
類的主要屬性:
// 路由器數量
< private > int routnum;
// 路由表
< private > tablenode table[max_rout_table_size];
類的主要接口:
// 設置路由器數量
< public > void setroutnum(int _routnum);
// 設置路由表
< public > void settable(tablenode _table[max_rout_table_size]);
// 獲得下一個中繼路由地址
< public > int * getaddrnexthop(int addrto[ip_address_length]);
// 獲得路由器數目
< public > int getroutnum(void);
10, 網絡數據包
類名: netdata
類的性質: 可實例化類
父類: 無
類的主要屬性:
// 網絡數據包之源地址
< private > unsigned int addressfrom[ip_address_length];
// 網絡數據包之目標地址
< private > unsigned int addressto[ip_address_length];
// 網絡數據包之前中繼地址
< private > unsigned int prehop[ip_address_length];
// 網絡數據包之后中繼地址
< private > unsigned int nexthop[ip_address_length];
// 是否是消息
< private > bool bmessage;
// 數據包跟蹤計數器:消息與ip數據包一一對映
< public > double id;
// 網絡數據包之數據信息
< private > int ipdata[ip_address_length];
類的主要接口:
// 判斷是否為應答消息
< public > bool ismessage(void);
//判斷網絡數據包是否相同
< public > bool operator ==(netdata &netdata);
// 設置網絡數據包源地址
< public > void setaddressfrom(unsigned int addrfrom[ip_address_length]);
// 設置網絡數據包目標地址
< public > void setaddressto(unsigned int addrto[ip_address_length]);
// 獲得網絡數據包源地址
< public > unsigned int * getaddressfrom(void);
// 獲得網絡數據包目標地址
< public > unsigned int * getaddressto(void);
// 設置網絡數據包之前中繼地址
< public > void setprehop(const unsigned int _prehop[ip_address_length]);
// 設置網絡數據包之后中繼地址
< public > void setnexthop(const unsigned int _nexthop[ip_address_length]);
// 獲得網絡數據包之前中繼地址
< public > unsigned int * getprehop(void);
// 獲得網絡數據包之后中繼地址
< public > unsigned int * getnexthop(void);
// 設置ip數據包之數據內容
< public > void setipdata(const int _ipdata[ip_address_length]);
// 獲得ip數據包之數據內容
< public > int * getipdata(void);
11, 通信
類名: communication
類的性質: 可實例化類
父類: 無
類的主要屬性:
// 網絡模擬
< private > net &net;
//網絡數據結構的引用
< private > netnode *& pnodearray;
類的主要接口:
// 單數據包路由
< public > void singledatarout(void);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双峰县| 青铜峡市| 出国| 勃利县| 鹤岗市| 乌兰察布市| 社会| 茂名市| 嘉兴市| 南岸区| 卫辉市| 房产| 应城市| 亚东县| 乳源| 观塘区| 淳化县| 郸城县| 阿瓦提县| 南木林县| 射阳县| 延庆县| 昭平县| 福建省| 抚松县| 嵊泗县| 宜章县| 枣阳市| 巧家县| 蕲春县| 榆树市| 略阳县| 肃南| 武隆县| 永德县| 兴业县| 崇仁县| 青川县| 丰都县| 阳山县| 青州市|