根据导师的要求,这次的任务是要模拟一个类似BT网络的P2P网络,并实现一些算法,查了些资料,都说NS2对于P2P网络的模拟和支持都不好,基本没有模板可以用,而且效率很低,只能模拟几万个节点左右,看到挺多人推荐使用peersim,就准备下来用用看。而且在官网上看到已经有很多别人编译好的覆盖网络的模板,其中也包括BT网络,chord网络等,貌似很方便的样子。

首先是下载使用安装,这部分其实很简单,网上的教程足够了。

安装步骤:
1. 首先安装JDK,配置好环境变量,以本机为例子:
新建JAVA_HOME: C:\Program Files\Java\jdk1.6.0_26
新建CLASSPATH: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
Path后面加上: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
 
2. 下载并解压PeerSim
3. 运行PeerSim里的例子
方法一:在dos窗口下运行
1)开始 --> 运行 --> cmd --> 进入到本机peersim文件夹下
2)输入以下命令:
java -cp peersim-1.0.5.jar;jep-2.3.0.jar;djep-1.0.0.jar peersim.Simulator example/config-example1.txt    
 
方法二:在eclipse中运行
1)新建项目,并导入peersim文件夹里的四个jar包,同时导入Simulator.java文件:
a. 右击jar目录 -> Build Path -> configure build path -> Add External Jars
b. 在src下新建一个package,导入Simulator.java
然后配置运行参数

选择 Run—> Run Configuration

双击Java Application,会出现New_configuration的界面

在右侧的“Main” 面板中设置main class为peersim.Simulator:

然后点击“Argument”面板,设置 “Program arguments” 为 config-example1.txt 所在的位置,注意要加双引号:

最后运行即可,得到的结果和在cmd上运行一样

Chord等协议的模拟:

a.       需要从官方网站http://sourceforge.net/projects/chord/?source=dlp上下载对应的Chord和Pastry协议的压缩包

b.       解压

c.       将chord源码生成.jar,命名为chord.jar,放在chord目录下

d.       从peersim-1.0.5.jar中将peersim-1.0.5、jar:jep-2.3.0.jar、djep-1.0.0.jar三个包拷到chord目录下

e.       运行java -cp "peersim-1.0.5.jar:jep-2.3.0.jar:djep-1.0.0.jar;chord.jar" peersim.Simulator example.cfg 即可看到模拟结果

第c步需要打包的原因:

Chord目录下提供的readMe-chord.pdf是不需要对chord源码打包,但是这样做的话是会报NoDefClassFound错误的,因为Chord源码本没有编译过,没有.class文件。

Pastry类似。

向peersim开火!P2P开火!(安装和样例运行)的更多相关文章

  1. spark单机部署及样例运行

    spark单机运行部署 环境预装 需要预先下载jdk和spark.机器使用centos6.6(推荐).然后依次运行 [root@spark-master root]# cd /root #安装必要的软 ...

  2. hello MemSQL 入门安装演示样例

    一,介绍 MemSQL号称世界上最快的分布式关系型数据库,兼容mysql但快30倍,能实现每秒150万次事务.原理是仅用内存并将SQL预编译为C++. 二,部署 官网下载地址:http://www.m ...

  3. Inno Setup安装程序单例运行

    1.源起: KV项目下载底层升级包,老是报出升级文件占用问题,反复分析,不得其所. 今天突然发现同时启动多个升级程序实例,分析认为安装包同时被调用多次,引发实例访问文件冲突,导致此问题. 安装程序由I ...

  4. RHEL5 X86-64上安装Oracle 11gR2演示样例与总结

    进入Oracle DBA行业也有好几年了,可是说到安装Oracle的经验,我还真不是特别多,印象中刚開始每次安装都有点磕磕碰碰,随着接触Oracle的时间越来越长,各方面的原理.机制也都有一定的了解后 ...

  5. 【UNIX网络编程(三)】TCP客户/server程序演示样例

    上一节给出了TCP网络编程的函数.这一节使用那些基本函数编写一个完毕的TCP客户/server程序演示样例. 该样例运行的过程例如以下: 1.客户从标准输入读入一行文本,并写给server. 2.se ...

  6. 关于peersim样例配置文件的超详细解读(新手勿喷)

    相信很多兄弟一开始接触peersim,对配置文件还是有点不适应,我看了好久的样例的配置文件,一层层去找对应的文件的方法,终于好像悟懂了一点,记下来以后回顾. 贴上代码,一点点分析. 首先要说下所谓的配 ...

  7. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  8. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  9. Kafka在Linux上安装部署及样例测试

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...

随机推荐

  1. html/css 浮动练习之井字形布局

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 10.6 CCPC northeast

    1001 Minimum's Revenge 点的编号从 1 到 n ,u  v 的边权是 LCM(u,v) ,求这个图的最下生成树 搞成一颗以 1 为 根 的菊花树 ---------------- ...

  3. 程设大作业xjb写——魔方复原

    鸽了那么久总算期中过[爆]去[炸]了...该是时候写写大作业了 [总不能丢给他们不会写的来做吧 一.三阶魔方的几个基本定义 ↑就像这样,可以定义面的称呼:上U下D左L右R前F后B UD之间的叫E,LR ...

  4. EF6 CodeFirst 实践系列文章列表

    2015 Jul.16 EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(一) 来自:wangweimutou 本系列源自对EF6 CodeFirst的探索 ...

  5. java连接sql问题

    1.No suitable driver found for Jdbc: 1)确保​jdbc:sqlserver://localhost;user=sa;password=123456;databas ...

  6. 【Python⑤】python序列---list和tuple

    sequence 序列 sequence(序列)是一组有顺序的对象的集合.序列可以包含一个或多个元素,也可以没有任何元素. 我们之前所说的基本数据类型,都可以作为序列的对象.对象还可以是另一个序列.序 ...

  7. Listener实现单态登陆

    MyEclipse中新建Web Project项目,完整目录如下: 需要的jar包为commons-logging-xxx.jar 1.singleton.jsp <%@ page langua ...

  8. python cmd下运行中文乱码 策略

    如我运行一个脚本,执行后输出中文看不懂 然后呢在文件头加上 from __future__ import unicode_literals 注意:需要去掉所有字符串前的 u, 这样所有字符串均默认为u ...

  9. wordpress 首页调用文章 不同样式的方法

    <?php $count = 1; $display_categories = array(1); foreach ($display_categories as $category) { ?& ...

  10. 百度echarts地图扩展动态加载geoCoord

    var data={}; for(var i=0;i<result.length;i++){ data[(""+result[i].name+"")]=e ...