JCHub

  • Home
  • Category
    • A/V
    • WebRTC
    • Beauty of Programming
    • Linux
    • Windows
    • Moments of Life
    • Campus Life
  • Reference
    • API Reference
    • Utilities
    • AV Test
    • Doc
  • Message Board
  • About
JCHub
Code as My Sword, Lost in Obsession
Information Technology

Qt 简介

Qt 是一个著名的 C++ 应用程序框架。1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。Qt很容易扩展,并且允许真正地组件编程。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件。使用 Qt,在一定程度上你获得的是一个“一站式”的解决方案:不再需要研究 STL,不再需要 C++ 的,不再需要到处去找解析 XML、连接数据库、访问网络的各种第三方库,因为 Qt 自己内置了这些技术。 Qt 是一个跨平台的框架。跨平台 GUI 通常有三种实现策略: 1. API 映射:API 映射是说,界面库使用同一套 API,将其映射到不同的底层平台上面。大体相当于将不同平台的 API 提取公共部分。比如说,将 Windows 平台上的按钮控件和 Mac OS 上的按钮组件都取名为 Button。当你使用 Button 时,如果在Windows 平台上,则编译成按钮控件;如果在 Mac OS 上,则编译成按钮组件。这么做的好处是,所有组件都是原始平台自有的,外观和原生平台一致;缺点是,编写库代码的时候需要大量工作用于适配不同平台,并且,只能提取相同部分的 API。比如 Mac OS 的文本框自带拼写检测,但是 Windows 上面没有,则不能提供该功能。 这种策略的典型代表是 wxWidgets。这也是一个标准的 C++ 库,和 Qt 一样庞大。它的语法看上去和 MFC 类似,有大量的宏。据说,一个 MFC 程序员可以很容易的转换到 wxWidgets 上面来。 2. API 模拟:前面提到,API 映射会“缺失”不同平台的特定功能,而 API 模拟则是解决这一问题。不同平台的有差异 API,将使用工具库自己的代码用于模拟出来。按照前面的例子,Mac OS 上的文本框有拼写检测,但是 Windows 的没有。那么,工具库自己提供一个拼写检测算法,让 Windows 的文本框也有相同的功能。API 模拟的典型代表是 wine —— 一个 Linux 上面的 Windows 模拟器。它将大部分 Win32API 在Linux 上面模拟了出来,让 Linux 可以通过 wine 运行 Windows 程序。由此可以看出,API 模拟最大优点是,应用程序无需重新编译,即可运行到特定平台上。另外一个例子是微软提供的 DirectX,这个开发库将屏蔽掉不同显卡硬件所提供的具体功能。使用这个库,你无需担心硬件之间的差异,如果有的显卡没有提供该种功能,SDK 会使用软件的方式加以实现。 3.GUI 模拟:任何平台都提供了图形绘制函数,例如画点、画线、画面等。有些工具库利用这些基本函数,在不同绘制出自己的组件,这就是 GUI 模拟。GUI 模拟的工作量无疑是很大的,因为需要使用最基本的绘图函数将所有组件画出来;并且这种绘制很难保证和原生组件一模一样。但是,这一代价带来的优势是,可以很方便的修改组件的外观——只要修改组件绘制函数即可。很多跨平台的 GUI 库都是使用的这种策略,例如 gtk+(这是一个 C 语言的图形界面库。使用 C 语言很优雅地实现了面向对象程序设计。不过,这也同样带来了一个问题——使用大量的类型转换的宏来模拟多态,并且它的函数名一般都比较长,使用下划线分割单词,看上去和 Linux 如出一辙。gtk+ 并不是模拟的原生界面,而有它自己的风格,所以有时候就会和操作系统的界面格格不入。),Swing 以及我们的 Qt。 Qt 和 wxWidgets 一样,也是一个标准的 C++ 库。但是它的语法类似于 Java 的 Swing,十分清晰,而且使用信号槽(signal/slot)机制,让程序看起来很明白——这也是很多人优先选择 Qt 的一个很重要的原因。不过,所谓“成也萧何,败也萧何”。这种机制虽然很清楚,但是它所带来的后果是你需要使用 Qt 的 moc 对程序进行预处理,才能够再使用标准的 make 或者 nmake 进行正常的编译,并且信号槽的调用要比普通的函数调用慢大约一个数量级(Qt 4 文档中说明该数据,但 Qt 5 尚未有官方说明)。Qt 的界面也不是原生风格的,尽管 Qt 使用 style 机制十分巧妙地模拟了原生界面。另外值得一提的是,Qt 不仅仅能够运行在桌面环境中,还可以运行在嵌入式平台以及手机平台。 Qt 第一版于 1991 年由 Trolltech (奇趣科技)发布。后来在 2008 年,Nokia 斥资 1.5 亿美元收购 TrollTech,将 Qt 应用于 Symbian 程序开发。2012 年 8 月 9 日,Nokia 将 Qt 以 400 万欧元的价格出售给 Digia。 伴随着 Qt,一直有两种授权协议:商业授权以及开源授权。在 Qt 的早期版本,商业授权包含一些开源授权不提供的组件,但是在近期版本则不存在这个问题。以往人们对 Qt 的开源授权多有诟病。早期版本的 Qt 使用与 GPL 不兼容的协议授权,这直接导致了 KDE 与 GNOME 的战争(由于 Linux 使用 GPL 协议发布,GPL 协议具有传染性,作为 Linux 桌面环境的 KDE 却是基于与 GPL 不兼容的 Qt 开发,这就不遵守 GPL 协议)。不过,现在 Qt 的开源版本使用的是 GPLv3 以及 LGPL 协议。这意味着,你可以将 Qt 作为一个库连接到一个闭源软件里面。可以说,Qt 协议的争议已经不存在了。

2013年11月25日 0comments 1368hotness 0likes Jeff Read all
Campus Life

Protected: 中南大学第一届物联网专业就业情况

There is no excerpt because this is a protected post.

2013年11月24日 0comments 2056hotness 0likes Jeff Read all
Information Technology

最危险的开源项目——比特币

一时间,关于比特币的信息充斥着互联网的各个角落,11月19日上午,比特币的价格又如同做了次过山车,最高触及900美元的高价,然后在30分钟内跌到了650美元,但这仍然比18日的最高价569美元上涨了不少。而去年11月中旬,比特币的价格还在11美元,1年之内最高涨幅竟然达到了90倍。 什么是比特币 我们先来了解一下比特币是什么东西。比特币英文名称为Bitcoin,简写为BTC,货币符号为฿,这是一种虚拟的加密电子货币,可以由开源的P2P软件产生(俗称“挖矿”)。 比特币的概念最初由中本聪(Satoshi Nakamoto,化名,真实身份未知)在2008年提出。随后,他以开放、对等、共识、直接参与的理念为基准,结合开源软件和密码学中块密码的工作模式,在P2P对等网络和分布式数据库的平台上,开发出比特币发行、交易和账户管理的操作系统。该系统让遍布整个对等网络用户端的各节点,按照其种子文件达成网络协议,从而确保在货币发行、管理、流通等环节中公平、安全、可靠。2009年1月3日,首批50个比特币问世。 比特币项目的源码也托管在了Github上,链接:https://github.com/bitcoin/bitcoin/,目前这一项目由比特币基金会维护。 比特币与传统电子货币的差异 比特币是一种新型的电子货币,与传统电子货币相比,它具有如下特性: 去中心化:比特币是一种分布式的虚拟货币,整个网络由用户构成,没有中央银行。 全世界流通:比特币可以在任意一台接入互联网的电脑上管理,不管身处何方,任何人都可以挖掘、购买、出售或收取比特币。 数量有限:其总数量非常有限,具有极强的稀缺性。该货币系统要求在4年内只有不超过1050万个,之后的总数量将被永久限制在2100万个。 专属所有权:操控比特币需要私钥,它可以被隔离保存在任何存储介质。除了用户自己之外无人可以获取。 匿名账户:比特币的账户是匿名的。但是因为交易历史是完全公开的,投入足够的人力和时间,通过交易链原则上可以追溯到实名用户。 开源:比特币的代码是开放的,而传统电子货币都是封闭的。商家、消费者、投资者和服务商,能够围绕这套开源体系创建起非常丰富的服务和金融体系。 比特币有什么用? 比特币可以用来兑现,可以兑换成大多数国家的货币。使用者可以用比特币购买一些虚拟物品,比如网络游戏当中的衣服、帽子、装备等,只要有人接受,也可以使用比特币购买现实生活当中的物品。 近日,果壳电子宣布其在线销售的智能手表支持比特币付款、百度旗下提供网络安全服务的网站加速乐也支持比特币结算,盛大网络旗下的地产开发商盛旅置业甚至在上海推出了支持比特币购买的楼盘。 除部分国家对虚拟货币有明文规定外,还没有任何国家对比特币的发行作出法律的规范和保障。由于比特币账户是匿名的,所以也可能会被用于非法的黑市交易,比如购买枪支、毒品、走私等。 目前更多的比特币持有者将比特币作为一种投资产品。 比特币价格为什么会疯长? 为什么比特币的价格能够在短时间内上涨这么多?比特币更像是股票,但不同的是,它没有一个正规的监管机构来控制。以下仅是对比特币价格疯狂波动的一些猜测。 1. 总数量限制 比特币是由对等网络P2P的节点在完成一个特定数学问题计算之后生产出的。这些数学计算需要相当的运算能力才能完成,并能够通过生成有效运算工作的证明来检验。在最初的四年里会有1050万个比特币被制造出来,这个数值每4年减半,所以在第4到第8年中会有525万个比特币被制造,在第8到第12年中会生产262.5万个比特币,以此类推。因此最终比特币的总数量会无限趋近于2100万。 由于资源稀缺,参与人数众多,导致比特币的“挖掘”工作越来越难,从而抬升了价格。 2. 中国区交易的推动 比特币价格疯涨的其中一个说法是,大量中国投资者的进场,抬升了其价格。 目前中国已经成为比特币交易的最大市场,2013年10月底,中国比特币的市场份额已经占全球的50%,每天交易量为10万个,已超越美国成为全球最大的比特币市场。 下图来自Fiatleak.com,显示了比特币的动态交易现状。图中显示的时段中,有大量的比特币交易来自中国,几乎是其他国家投资量总和的2倍。 3. 人们对比特币增值的信心 比特币的价值和增长空间在于未来有多少人、多少商品和服务愿意接受比特币的付款,目前拥有比特币的人数仅有数十万人,增长空间巨大,也有越来越多的商家开始接受比特币支付。再加上一些国家政府也开始干预(19日美国参议院首次关于比特币召开听证会),因此人们对于比特币的升值空间有了更大的信心。 4. 幕后庄家 比特币交易与股市相比,有更高的风险,因为它没有涨跌停限制,同时交易是24小时开放的,由于筹码较少,比特币的价格易受到庄家控制,有可能出现一天价格涨几倍的情况,同时也可能出现一天内价格跌去一半的情况。 比特币的安全隐患 所谓“树大招风”,高投资回报的背后往往意味着高风险。由于没有一个监管机构,导致比特币疯长的同时也带来了一系列安全隐患,比如: 2011年6月19日,Mt.Gox比特币交易中心的安全漏洞导致1比特币价格一度跌至1美分。原因是一个黑客从感染木马的电脑上盗用了该用户MtGox的证书,从而把比特币转到自己的帐号上并抛售,产生了大量该价格的“ask”请求。 2011年7月,世界第三大比特币交易中心Bitomat的运营商宣布:记录着17,000比特币(约合22万美元)的wallet.dat文件的访问权限丢失。同时宣布决定出售服务以弥补用户损失。 2011年8月,作为常用比特币交易的处理中心之一的MyBitcoin宣布遭到黑客攻击,并导致关机。涉及客户存款的49%,超过78000比特币(当时约相当于80万美元)下落不明。 2012年,Bitcoinica两度遭到黑客攻击,被指控忽略客户资金的安全性以及伪造提款申请。 2012年8月下旬,Bitcoin Savings and Trust被所有者关闭,并留下据称约560万美元的债务。 2012年9月,Bitfloor交易中心被黑客入侵,24,000比特币(约相当于25万美元)被盗。 2013年5月24日,比特人网站btcman创建的比特海网站被所谓的黑客入侵,约40个比特币被盗。 2013年10月底,注册地位于香港的GBL比特币交易平台下线,卷走用户持有的价值410万美元的比特币。 2013年11月,网络钱包服务商inputs.io被两个黑客入侵,盗走4100比特币。 未来的预测 就像谁也没有预测到比特币能火到今天这种地步,也没有人能预知未来的发展。不过可能会存在以下几种情况。 1. 价格趋于理智,成为合法货币 货币的价值取决于供需关系,而目前比特币还处于初级发展阶段,供需关系还不明朗,随着技术和经济的发展,未来比特币或有可能成为一种成熟的货币,在市场上更广泛地流通。届时其价格也将趋于合理、稳定。 当然这是一个理想的结果,但是如果没有一个正规的全球性监管机构,这个结果基本上无法实现。 2. 触及经济、社会安全,政府介入 由于比特币是全球性的,没有一个国家能够监管,这势必对现有的金融体系构成威胁。届时政府也许会出台相应的措施来进行调控。 目前比特币更多是用来投资,但是在支付方面,由于其匿名性,可能被用来进行非法交易、洗钱等,进而触及社会安全,这也是需要政府监管的原因之一。 3. 泡沫破碎 比特币价格的飙升其中一个原因是参与的用户越来越多,如果用户量减少,其价格也将下跌。如果真如上面所说的有幕后庄家,这一泡沫终将破碎,最后买单的还是散户。 因此,也有人预测比特币最终将会变成一场庞氏骗局和泡沫经济。 4. 被更成熟的虚拟货币代替 英国《经济学人》杂志曾表示,对比特币最大的威胁是竞争。该杂志表示,由于本身的缺陷和新的虚拟货币的替代,比特币货币体系最终可能无法维持甚至陷入崩溃,但它仍将为整个金融行业留下不朽的遗产,推动新的数字货币的发展。 最后 目前一些国家也在出台比特币相关的规范,2013年8月,德国政府认可比特币作为一个记账单位,10月29日,世界首台比特币自动提款机也已在加拿大启用,可办理加拿大元与比特币的兑换。 尽管比特币的产生、交易、支付都非常自由,但是如果没有了合法机构的监管以及相关法律法规的约束,这种自由则意味着更大的风险。

2013年11月23日 0comments 1276hotness 0likes Jeff Read all
Beauty of Programming

下载神器——idm

idm(Internet Download Manager)是国外的一款下载工具,能提升你的下载速度最多达5倍,安排下载时程,或续传一半的软件,多线程下载,把一个文件分多段同步下载,最后再合并(对于较大的文件合并时间有些慢)。Internet Download Manager的续传功能可以恢复因为断线、网络问题、计算机当机甚至无预警的停电导致下传到一半的软件。此程序具有动态档案分割、多重下载点技术,而且它会重复使用现有的联机,而不需再重新联机登入一遍。聪明的in-speed技术会动态地将所有设定应用到某种联机类型,以充分利用下载速度。 Internet Download Manager支持下载队列、防火墙、代理服务器和映摄服务器、重新导向、cookies、需要验证的目录,以及各种不同的服务器平台。此程序紧密地与火狐或chrome等浏览器结合(会自动安装插件),自动地处理你的下载需求,替代浏览器自带的单线程下载工具。如果启用高级集成,则可以捕获和接管从任何程序的下载。此程序还具有下载逻辑最佳化功能、检查病毒,以及多种偏好设定。idm支持 HTTP, FTP, HTTPS 和 MMS 协议。IDM 不是p2p下载软件,因此无法用于下载通过BT和eMule发布的内容,但是我们可以利用百度网盘免费的离线下载功能下载相应东西,再在网盘里用idm下载相应内容。 不过idm是一款共享软件,需要付费购买,但是我们可以破解。破解方法如下: 1.下载好官方版本的IDM,即Internet Download Manager,通常会有提示让你注册。 2.找到hosts文件:C:\WINDOWS\system32\drivers\etc,用记事本等文本编辑程序打开host文件,在最后添上如下内容,然后保存。 127.0.0.1 registeridm.com 127.0.0.1 www.registeridm.com 127.0.0.1 www.internetdownloadmanager.com 3.打开IDM,注册,注册码如下: OS5HG-K90NH-SXOGT-7JYEZ R2C1T-O0KQO-JAVU2-4MMYP M2A16-47AAW-6NLYP-V1E0J IZO7M-360FW-QY1XP-AWLPN 46YFS-S9G7H-QZFWI-QQBQB TUTR2-I2NHO-GQBC6-ZECWH 邮箱姓名随便填写即可。

2013年11月21日 0comments 1789hotness 0likes Jeff Read all
Beauty of Programming

中南大学数据结构课程设计--医院选址问题

医院选址问题--这是中南大学计算机系数据结构课程设计里面的一道题 1. 问题描述 n个村庄之间的交通图可以用有向网图来表示,图中边上的权值表示从村庄i到村庄j的道路长度。现在要从这n个村庄中选择一个村庄新建一所医院,问这所医院应建在哪个村庄,才能使所有的村庄离医院都比较近? 2. 基本要求 (1) 建立模型,设计存储结构 (2) 设计算法完成问题求解 (3) 分析算法的时间复杂度 3.实现代码 [crayon-69cfa4d6610ea634271400/]

2013年11月20日 0comments 1865hotness 0likes Jeff Read all
Beauty of Programming

中南大学数据结构课程设计--停车场管理

停车场管理--这是中南大学计算机系数据结构课程设计里面的一道题 1.问题描述 设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 2. 基本要求 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现。 3.实现代码 [crayon-69cfa4d662697745251569/]

2013年11月20日 0comments 1526hotness 0likes Jeff Read all
Beauty of Programming

中南大学--教你如何使用IPV6而不花流量

一、背景 我们学校是这几年升级了电信网络,从而使用上了光纤,不过网速被限制为坑爹的4M,而且每个月只有30G流量,对于爱看电影,电视剧的同学来说,这点流量真的是不够用,我觉得自己一天下来就看看新闻,打开网页,流量也用的将近1G。不过我们的数字中南是支持IPV6的,走IPV6就免流量,利用这个我们可以节约流量了,但是坑爹的4M网速限制了IPV6的优势,只能将就用着。 二、是否支持IPV6 首先是测试你的网络是否支持IPV6:http://test-ipv6.com/,有时候电信会抽风,偶尔IPV6无法访问,如果支持的话,会出现如下结果: 你所连接的的网络会如下所示: 如上图所示,表示支持IPV6,如果支持的请看下面,不支持的话就没办法了,打电话给问问吧。 三、PT下载 首先是介绍PT下载站,至于什么是PT,自己谷歌度娘去吧,在此就不解释。比较有名的就是六维空间:http://bt.neu6.edu.cn/ (东北大学IPv6 BT下载站)。其他的就不一一写了,其实有个六维空间我觉得就够了,上面资源非常多,更新也快,就是注册有点麻烦,需要邀请注册,或者特殊节日才能注册,我就是光棍节那天注册的。注册完后就可以在六维那下载种子,然后使用uTorrent软件下载。我最近就用uTorrent软件在六维空间下了几个视频,走的都是IPV6,没花费我流量。 如果不放心的话可以把IPV4关了,只用IpV6,如下图所示,打开:控制面板\网络和共享中心\更改适配器设置,选择你所连接的网络,右键选择属性,把Internet协议版本4前面的勾去掉就可以了 四、Goagent IPV6代理 如果不只是下资源,想干其他的可以如下操作,需要使用goagent,作为我们的代理服务器,首先先进行如下操作: 1)注册google账户,并申请开启GAE的服务 2)下载goagent,部署到GAE上,配置 3)使用chrome 或者 firefox 浏览器,安装SwitchySharp等代理设置插件。 详细过程见:https://code.google.com/p/goagent/wiki/InstallGuide 说明:goagent已经迁移到Github了:https://github.com/goagent/goagent 由于我们要使用IPV6,所以跟上述教程唯一不同的是把goagent文件里面local下面的proxy.ini按如下设置: 也就是profile = google_ipv6 ,只需要改这一处,如果不按此设置走的是套餐内的流量。由上图可以看出appid可以填写多个,目前GAE支持创建25个app,也就是我们有25个appid,相当于一天25G流量,绝对够用(以前只能创建10个)。 最新版以及goagent3.1.1以上版本中中profile = google_ipv6 要改为profile = ipv6,前面的google_要去掉,下载最新版的只需要把profile = ipv4改为profile = ipv6 配置成功运行后,如果觉得不放心,可以把IPV4的网络关了,只用IPV6 如果禁用IPV4后,无法连接网络,请更改IPV6的DNS。 IPv6 DNS地址改为:2001:4860:4860::8888和2001:4860:4860::8844 goagent运行后除了要用chrome以外其他软件的话,只需把该软件的代理服务器改了就可以,比如百度云管家,这样百度云管家用了代理服务器,走的就是IPV6,我平时下载都用idm这个强大的软件,给idm也设置下代理服务器,那么平时下载都走的IPV6,不用担心流量不够用了,而且idm结合百度网盘可以说是强大的组合,差不多什么资源都可以下载到,因为百度网盘支持bt,磁力链接离线下载,先下到百度网盘,再用idm下载,速度可以说是相当快,百度网盘中规定超过2G文件必须用百度云管家下载,不过我们打开这个链接http://pan.baidu.com/wap/home 就不受限制了,超过2G的文件照样可以用idm下载。百度云管家设置ipv6代理如下图所示: idm设置ipv6代理如下图所示 其实官方的教程https://code.google.com/p/goagent/wiki/InstallGuide https://github.com/goagent/goagent/blob/wiki/InstallGuide.md 已经写得很详细了,不懂的话自己可以认真看一看,有什么问题可以在那里找下,或者在此文章下面给我留言。 /************由于众所周知原因,Goagent目前已经停止更新维护了************/ 五、VPS+Shadowsocks IPV6代理 由于Goagnet停止更新维护,而且通过Goagent需要注册Google App Engine,需要翻墙才能操作,不是很方便。所以目前有个更好的方法,就是使用VPS+Shadowsocks。 1)首先要购买一个VPS,比较便宜好用的有搬瓦工:https://bandwagonhost.com或者http://www.ramnode.com/vps.php等等,买的VPS都会给你分配一个IPV6地址的; 2)配置VPS,搭建Shadowsocks服务,具体的上网查找吧,我就不说了。搬瓦工VPS的后台控制面板可以一键搭建Shadowsocks服务; 3)下载Shadowsocks客户端,配置好连接就可以了,具体请上网查找。 4)其他使用方法:比如某某软件(idm,百度网盘客户端)使用IPV6连接请参考Goagent那一部分,操作大致一样。

2013年11月17日 11comments 9588hotness 2likes Jeff Read all
Beauty of Programming

中南大学计算机网络实验报告

实验一:距离矢量路由算法 1实验目的 通过编程模拟距离矢量路由算法,了解距离矢量路由算法是如何工作的。 2实验内容 编程实现距离矢量路由算法的路由表交换过程,并显示出每轮交换过后路由表的各路由变化情况,得到各最佳路线。 3实验原理 网络层的主要功能是将分组从远端机器经选定的路由送到目的端机器。路由选择算法和它们使用的数据结构是网络层设计的一个主要区域。负责确定所收到分组应传送的外出路线。 距离矢量路由算法的工作原理:每个路由器维护一张表(即一个矢量),表中列出了当前已知的到每个目标的最佳距离,以及所使用的线路。通过在邻居之间相互交换信息,路由器不断地更新它们内部的表。 在距离矢量路由算法中,每个路由器维护了一张路由表,它以子网中的每个路由器为索引,并且每个路由器对应一个表项。 该表项包含两部分:为了到达该目标路由器而首先使用的输出线路,以及到达该目标路由器的时间估计值或距离估计值。 距离矢量路由算法在理论中可以工作,但在实践中有一个严重的缺陷:虽然它总是能够达到正确的答案,但是它收敛到正确答案的速度非常慢,尤其是,它对于好消息的反应非常快,但是对于坏消息的反应非常迟缓。 4实验步骤 4.1编写程序 程序的C语言源代码: [crayon-69cfa4d6630c2213031895/] 4.2设计思路 程序先定义了一个路由表——RoutNode data[ROUTNUM][ROUTNUM],路由表的初始信息存储在文件中,程序运行是先调用函数InitData(FILE* pfile)从文件中读取路由表的初始信息,然后输出初始路由表的信息,Communication(int recv, int send)函数主要是向邻近节点发送自己的路由表信息,Exchange()函数则根据新路由表信息更新自己的路由表。当所有的路由表节点都更新一遍后,整个路由表更新完毕。 5实验结果分析 5.1运行部分结果如下图所示: A到D的路径 C到G的路径 5.2结果分析 路由表初始信息从txt文件读取,完成路由表初始化,然后根据距离向量路由算法完成路由表的更新操作,得到各路由情况,最后任意输入两个路由表接点,则可得出两接点之间的最短路径。 6实验心得体会 距离矢量路由算法作为常见的动态算法,通过该实验加深了对网络层距离矢量路由算法的理解,明白了路由表之间如何交换,同时也提高了动手操作能力。

2013年11月14日 0comments 1513hotness 0likes Jeff Read all
1…2021222324…26
Copyright Statement

Unauthorized reproduction or plagiarism in any form is strictly prohibited. For reprint requests, please contact via email.

Recent Comments
snail Published at 1 weeks ago(03 03202633105 27 27pm26) 多谢,大佬。醍醐灌顶!
dongxuh Published at 8 months ago(07 07202573103 27 27pm25) 真心不错的博客,有机会能一起分享
南南 Published at 9 months ago(07 07202573103 15 15pm25) 写的超棒!
Jeff Published at 11 months ago(05 05202553105 15 15pm25) 2025-03-12的提交已经支持了
Jeff Published at 11 months ago(05 05202553105 15 15pm25) 源视频地址已经不可用了,引用优酷的视频地址,看了下被删了
Ad

COPYRIGHT © 2026 jianchihu.net. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang