NS2+Gnutellasim环境的搭建

2024-03-21 19:32
文章标签 搭建 环境 ns2 gnutellasim

本文主要是介绍NS2+Gnutellasim环境的搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于NS2和Gnutelasim环境的搭建,其实网上有许多介绍和说明,有些还非常详细。但是我按照网上的各种说明试过许多遍,一路走来非常艰难,最终也未搭建成功,最后还是自己摸索出了真正可行的安装过程,这里做个总结。
Gnutellasim是基于NS2的,所以首先得安装NS2.
在安装之前,必须先浏览两个网站,对整体有个了解,相关软件(源码)也需要在里面下载:
NS2官网: http://www.isi.edu/nsnam/ns/
Gnutellasim官网: http://www.cc.gatech.edu/computing/compass/gnutella/

安装NS2有两种选择,一种是安装在Windows+cygwin平台上,另一种是直接安装在Linux环境中。当然,早期的NS2还有直接在Windows中编译安装的,但非常复杂,并且从2.26版本之后就不再支持这种方式了。
这里主要详细介绍直接在Linux中安装NS2和Gnutellasim的方法,由于Gnutellasim已停止更新,只能在NS2.26及更早的版本上安装(官网上如是说,更高版本我没试过,也许也可以),因此,本文接下来详细介绍NS2.26+Gnutellasim的安装过程。我使用的Linux版本为Ubuntu 8.04
安装过程总体包括如下步骤:
1、配置安装NS2需要的环境,包括gcc/g++,libxmu-dev(nam需要)等
2、安装NS2.26
3、配置安装Gnutellasim需要的环境,主要是PDNS
4、安装Gnutellasim
下面逐步介绍
一、配置安装NS2需要的环境
在Linux下安装NS2,本来是非常方便的,只需提供其所需要的编译环境即可。但是之后要案装的Gnutellasim却跟高版本的gcc/g++不兼容,如果这里直接安装Ubuntu默认的gcc/g++的话,之后的苦就有得受了。为了避免之后的麻烦(从我的经历来看,非常痛苦!!!),必须安装低版本的gcc/g++(估计至少3.0以下)。但是,使用Ubuntu8.04根本没法装上如此低版本,默认的是4.2。那怎么才能安装低版本的gcc/g++(我用的是2.95)呢?我采取的办法是将Ubuntu的更新源换成Ubuntu 6.06,在里面我找到了2.95。接下来,安装:
1、apt-get install build-essential        #必需,否则g++装不上
2、在新立得中找到gcc/g++ 2.95相关包,安装
3、apt-get install libxmu-dev

二、安装NS2.26
相关介绍网上很多,没什么问题。
Getting Older Versions of Ns: http://www.isi.edu/nsnam/dist/
建议下载allinone的包,这样安装起来简便许多。

三、配置安装Gnutellasim需要的环境
其实这个步骤在Gnutellasim的官网上指明了,但是很容易被忽略,所以特意提出来说。
原文中是这么描述的:
gnusim-ns2.26-v1.0.tgz for ns2 version 2.26  (apply pdns patch first!)
安装Gnutellasim之前必须先打上PDNS的补丁,即使你用不着PDNS!!!。如果忽略了这点的话,ns执行程序可以成功编译生成,但是运行起示例程序时,出现的问题会让你很头痛的。
如果不需要使用PDNS,这里只是需要打上PDNS的补丁包即可,并不需要把PDNS装上。打补丁方法为:
1、下载pdns patch,解压到ns-allinone-2.26所在的目录下
2、patch -b -p1 < pdns-2.26_patches-v2

四、安装Gnutellasim
官网上有详细说明。由于我没打算使用PDNS,所以就直接在NS2上安装了,在PDNS上安装要复杂些。
这里安装时还会遇到一个小问题,解决方法只要把以下文件中的.relid'`替换成.relid`即可:
ns-allinone-2.26/tcl8.3.2/unix/configure
ns-allinone-2.26/tcl8.3.2/unix/tcl.m4
ns-allinone-2.26/tk8.3.2/unix/configure
ns-allinone-2.26/tk8.3.2/unix/tcl.m4
ns-allinone-2.26/otcl-1.0a8/configure

按照以上步骤安装之后,Gnutellasim的示例脚本应该就可以跑起来了。

这篇关于NS2+Gnutellasim环境的搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/833680

相关文章

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次