路由模拟——类设计的声明部分

【信息科学与工程学】【产品体系】第三十九篇 IT产品系列需求01 互联网行业的需求 经过多轮补充,现整理出覆盖存储、网络、计算、安全、数据治理、AI治理、物联网/工控、管理与经营​ 八大领域的完整需求目录,共60条​ 详细需求。 阅读详情


                         路由模拟系统 设计方案(一)
                            接口说明部分

2004-3-21

一, 全局名空间
路由模拟系统中所有全局变量与函数皆实现在一个名空间中。


名空间: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);

 

 

                                                <2004-4-10 修改>

【信息科学与工程学】【管理科学】第七十二篇 管理层相对基层员工的信息差/资源差/权力差/认知差03 总裁/副总裁 定义系统状态(如:全正常、1个单元故障、降级运行、完全故障),状态间转移率 λ(故障率)和 μ(修复率)构成转移强度矩阵 Q。其中 γ_k = (2π/λ) n_k d_k cosθ_k 为相位厚度,η_k = n_k / cosθ_k (TE波) 或 η_k = n_k cosθ_k (TM波) 为光学导纳,θ_k为层内入射角。用于在光刻机设计阶段评估各子系统(光源、光学、工件台、真空等)的可靠性,识别薄弱环节,计算系统整体可用性(Availability),指导冗余设计和维护策略制定。 阅读详情

相关推荐

BOSS直聘数据采集实战:八爪鱼工具高效爬取职位信息的完整指南

本文提供了一份使用八爪鱼采集器高效爬取BOSS直聘职位信息的完整实战指南。针对非技术用户,详细讲解了从软件安装、网址规律分析到流程配置、数据导出的每一步操作,并分享了提升采集稳定性的高级设置与避坑技巧,帮助用户轻松实现数据采集自动化。

weixin_29061509的博客 1474

baidu回答称360应正视本身安全疑问

以为竞争对手北京北京奇虎科技有限公司将baidu公司申述至法院,需求赔偿1000万元。北京一中院4月21日开庭审理此案。baidu则否定伪造现实,称“360需求baidu封杀360负面新闻,本质是在摧残网民晓得现实真相的权力”。   网址之家连接惹恼360,360以为与现实不符   北京奇虎科技有限公司(以下称360)申述称,2013年9月24日,北京baidu网讯科技有限公司在旗下的

u013951435的专栏 566

华为交换机链路聚合对接思科交换机链路聚合故障

2台华为交换机采用堆叠方式与思科交换机之间使用链路聚合,华为交换机与cisco交换机链路捆绑接口频繁UP/DOWN,业务中断。

网络工程师日常的博客 2119

360遭百度索赔千万 金山遇王海“联手打假”

一旦引起动荡,短时间内便难以平静,杀毒软件领域亦是如此。继5月份“互掐”以来,上周,360、金山再度成为杀毒软件业界关注的焦点,不过,不同于以往的两家掐架,此次360、金山均分别成为了被告对象,其中,360遭遇百度起诉并索赔1000万元,而金山则被职业打假人王海联手广东打假人徐大江来了个“南北呼应”。   百度起诉360索赔千万   上周,《法制晚报》披露了百度状告360一事,称由于认...

buliedian 269

手把手教你为RK3588开发板适配RTL8211F网卡:设备树配置与PHY驱动匹配全流程

本文详细介绍了在RK3588开发板上适配RTL8211F千兆以太网PHY芯片的全流程,包括硬件原理图确认、设备树配置与PHY驱动匹配。通过实战案例和调试技巧,帮助开发者解决常见问题并优化网络性能,适用于嵌入式Linux开发中的Ethernet网络功能实现。

weixin_29184075的博客 526

Dify工作流实践—根据word需求文档编写测试用例到Excel中

文章介绍了用dify工作流实现从word需求文档到测试用例写入excel的详细落地过程

weixin_42476668的博客 5334

百度诉360不正当竞争索赔1000万 法院受理

据法制晚报报道,因认为对方侵犯自己著作权、构成不正当竞争,北京百度网讯科技有限公司、百度时代网络技术(北京)有限公司将奇智软件(北京)有限公司、北京三际无限网络科技有限公司一并告上法庭。记者今天获悉,北京市二中院已受理此案。 原告起诉 工具栏被定义为“恶评插件” 原告诉称,今年3月初,发现两被告在其360安全卫士7.0软件版本中,将两原告共同经营的百度工...

weixin_33804990的博客 127

一文掌握DrissionPage的详细使用

是一个基于 Python 的网页自动化工具,主要用于网页数据的抓取、自动化操作和测试。它结合了 Selenium 和 Requests 的优点,提供了更简洁、高效的 API,适用于各种网页自动化任务。DrissionPage 是一个功能强大且易于使用的网页自动化工具,适用于各种网页自动化任务。希望本文的 DrissionPage 的基本使用方法和一些高级功能能够帮助到你。

数据知道的博客 1万+

腾讯与360的谢幕

以及关于三际无限公司故意删除网络用户对于上述两款涉案软件的好评,关于两原告指控二原告人为支配网络用户对于上述两款涉案软件的投票结果的主张。构成不正当竞争的主张,法院认为证据缺乏,不予支持。 360恶评插件”锁定百度 今年3月初,原告诉称。两被告在其360平安卫士7.0软件版本中,将两原告共同经营的百度工具栏和百度地址栏两款软件定义为“恶评插件”并描述为“此类插件具有恶意行为,可能会危害

黄沙百战穿金甲,不破楼兰终不还。 1043

基于XDMA 的PCIE读写DDR

基于XDMA 的PCIE读写DDR 概述:   想实现基于FPGA的PCIe通信,查阅互联网各种转载…基本都是对PCIe的描述,所以想写一下基于XDMA的PCIe通信的实现(PCIe结构仅做简单的描述(笔记),了解详细结构移至互联网)。 实现功能:PC通过PCIE读写DDR,同时用户通过逻辑代码可以读取被写入DDR内的数据(我是通过VIO实现DDR任意地址,任意数据大小的读取。)。 实践实践!!! 说明: 参考文档: PCI Express Base Specification Revision 3.0 P

Crazzy_M的博客 1万+

RHCA II之路---EX442-10

这题比较耗时,可以多开2个窗口让他跑起来后先做后面的题目。

Q先生 588

四维图新地图坐标_电子地图“神仙打架”:百度与四维图新互诉侵权

四维图新一审获赔6500万,百度反诉索赔9000万。文丨猎云网ID:ilieyun作者丨王非11月20日晚间,四维图新发布公告称,公司与百度旗下三家公司(百度网讯、百度在线、百度云)的著作权侵权及不正当竞争纠纷案于11月19日由北京知识产权法院一审宣判,百度三家公司被判连带赔偿四维图新经济损失6450万元,以及合理支出926597.5元,合计6542.66万元。值得一提的是,这也是截至...

weixin_40006977的博客 306

【绝对要收藏-优秀论文范文】高项-度量绩效域

摘要:本文基于某水库数字孪生平台建设项目(2022.9-2023.5,645.97万元)的管理实践,从信息系统度量绩效域角度展开论述。项目构建了包含防洪调度等6大子系统的数字平台,实现洪水"四预"功能。重点分析了度量绩效域的五大要点:制定有效指标(如成本±8%偏差阈值)、多维数据采集、预警临界值设定、基于趋势的主动干预和持续改进机制。特别阐述了绩效问题的诊断方法,包括设备采购全周期成本分析、阶段性成本报告制度等。项目状态展示采用三维可视化看板,集成进度、成本、质量等多维度实时数据,最终实

xylllamm的博客 345

周鸿祎,你怕啥?

内容摘要:腾讯马化腾自“艰难的决定”之后就视360为“魔教”,视周鸿祎为“任我行”,视酒仙桥为“黑木崖”,虽然3Q在这两年没有什么大的摩擦,但是江湖上只要有人反对周鸿祎,就是马总团结的对象。      2月28日,北京狂风骤起,刚刚拟定中文名字的PM2.5肆虐在京城的大街小巷,挑战着人们的免疫系统承受能力。下午2点,在位于酒仙桥的奇虎360公司总部门口,《每日经济新闻》记者谢筱萍被360的安保人

黄沙百战穿金甲,不破楼兰终不还。 1022

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

2010年中国IT行业的十大案件

2010年,仿佛我们就在口水中度过,抄袭、侵权、攻击、不兼容、盗版等等层出不穷,而随着口水的不断升级,大家纷纷寻求法律途径解决问题。那么我们全面回顾一下2010年,在互联网软件行业中都有哪些官司。排名不分前后,均信手拈来,读者勿怪。 1、3Q大战 2、IT运维第一案 3、真假开心网宣判 4、瑞星侵害东方微点案 5、输入法第一案 ... ...

doublesmile的专栏 5593

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

四路 CAN 转 4G 网关

SG‑CAN‑4G‑410 为**四路隔离 CAN 转 4G 工业网关**,把 CAN2.0A/B 报文封装成 TCP/UDP 报文,通过 4G 无线网络实现 CAN 总线远程监控、远程控制。四路 CAN 相互独立;以太网仅用于本地配置,不做业务数据传输;支持移动 / 联通 / 电信 4G 网络。

S2003120416的博客 167

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【计算机网络】断点续传是怎么做到的:从 Range 请求到分片上传的完整机制

断点续传在下载侧靠的是 HTTP 现成的 Range 协议,Content-Range 保证偏移对得上,If-Range 防止文件变更导致的错误拼接;上传侧没有标准,需要自己设计 init/part/complete 三段式交互,核心是让服务端记住“哪些块已经收下”,从而把失败粒度从整个文件降到单个分片。 这套机制可以迁移到任何长耗时操作的设计上。判断方法很简单:先问失败粒度是多少。如果一次操作失败就得从头再来,那它迟早会在生产环境里出问题——传输、批量导入、数据迁移、长事务,都是同一个道理。把大操作切成

2503_94545876的博客 542

Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位

iptables 四表五链模型、firewalld zone 信任级别、云安全组与主机防火墙的关系与优先级,避坑改了防火墙把自己挡在服务器外面的翻车事故。

2502_91473995的博客 333

【Linux网络】TCP 服务器并发处理多客户端:从 fork 分发到双重 fork 彻底消灭僵尸进程

拆解 TCP 服务器并发演进链:fork 分发连接、SIGCHLD 循环回收僵尸、双重 fork 交孙进程给 init 收养,并给出模型选型与线上排错对照。

2301_78967866的博客 431

AI 芯片片上网络 NoC 深度解析:flit、虚通道与拥塞控制如何决定 GPU/TPU/LPU 的算力利用率

AI芯片算力瓶颈不在FLOPS,而在片上网络(NoC)——数据搬运的能耗与延迟决定MFU上限。物理限制下,长线延迟不随工艺缩小,迫使NoC将全局布线拆为可流水的短链路;能量账显示,一跳传输耗能可达数十次乘加操作。拓扑选择直接影响性能:二维mesh虽布线可行,但均匀流量下每节点可用带宽按1/√N衰减,实测仅达标称值30%。虚通道、双网设计、静态调度(如Groq)等技术旨在突破此瓶颈。从总线到crossbar再到多跳NoC,本质是用延迟换可行性。未来趋势:专用通路(脉动阵列)、晶圆级集成(Cerebras)、跨

我的博客 106

台湾行情数据API接入教程

想用程序获取台股行情,很多人第一步会搜“台股资料 API 推荐”,结果发现选择不少:证交所有免费接口,Yahoo Finance 也能查,券商还有自己的 API。真正写代码时才发现,有的数据只到收盘,有的延迟 20 分钟,有的必须先开户。本文先梳理台湾行情数据的几种获取渠道,再用 Python 从零搭一个可以运行的台股数据脚本:查代码清单、取实时报价和盘口、拉历史K线、做复权、用 WebSocket 接收实时推送,最后结合台积电 ADR 和新台币汇率计算跨市场溢价。

qq_34102871的博客 311

【基于 WebSocket 的多用户网页五子棋】—— 数据管理模块

但行好事,莫问前程

qq_42996461的博客 229

Qt网络编程实战指南:从底层Socket到现代异步架构的选型与避坑

本文梳理Qt网络编程的核心模块与演进路线,对比QTcpSocket与QNetworkAccessManager的使用边界,结合HTTP请求与TCP长连接的完整示例,说明信号槽、内存管理与事件循环的配合方式。重点记录连接池设计、证书校验、线程亲和性等实际开发中的关键决策点,帮助读者在C/S或跨平台项目中建立稳定的网络层基座。

2402_83344867的博客 300
上一篇: 路由模拟——路由算法1的构想
下一篇: 路由模拟——设计方案的实现(1)
PercyLee
博客等级 码龄24年 24粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值