资源简介
chord算法实现,基于DHT的四大算法之一。
代码片段和文件信息
// Chord.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include “util.h“
const int M = 5;
const int N= 1<
typedef struct tag_pair_kv{
int key;
char host[N];
}pair_kv;
struct hash_table_dht_entry
{
int node_id; //节点id
int successor;//后继节点
pair_kv pair;
};
struct hash_table_dht
{
bool bon_;
hash_table_dht_entry record[M];
int next;
};
int set_table(hash_table_dht* tableint node_id)
{
int ret = -1;
assert(0<=node_id for(int i=node_id+1;i != node_id;){
if(table[i].bon_){
ret = i;
break;
}
i = table[i].next;
}
return ret;
}
int _tmain(int argc _TCHAR* argv[])
{
/*
char* szMsg1 =“abcdefg“;
digest_type ret1;
sha_1(szMsg1strlen(szMsg1)&ret1);
for(int i=0;i<5;++i){
printf(“%x “ret1._block[i]);
}
printf(“\n“);
char * szMsg2 =“abcdefh“;
digest_type ret2;
sha_1(szMsg2strlen(szMsg2)&ret2);
for(int i=0;i<5;i++){
printf(“%x “ret2._block[i]);
}
printf(“\n“);
digest_type d;
int ret = distance(ret1ret2&d);
printf(“ret =%d:“ret);
for(int i=0;i<5;i++){
printf(“%x “d._block[i]);
}
*/
//m =5 ;chord环用32(2^5)个节点
//文件节点
char* fname1= “abc.txt“;
char* fname2=“123.rmvb“;
char* fname3 =“hello.mp3“;
char* fname4 =“dds.pdf“;
//在线节点
char* hostIp1=“192.168.0.1:5557“;
char* hostIp2=“222.220.14.231:80“;
char* hostIp3=“151.78.24.120:3074“;
const int num = (1< printf(“num = %d\n“num);
hash_table_dht node_table[num];
//reset table
for(int i=0;i node_table[i].bon_ = false;
node_table[i].next = (i+1)%(1< }
//生成对
int key1key2key3key4;
hash(fname1strlen(fname1)&key1);
hash(fname2strlen(fname2)&key2);
hash(fname3strlen(fname3)&key3);
hash(fname4strlen(fname4)&key4);
printf(“key1=%dkey2=%dkey3=%dkey4=%d\n“key1key2key3key4);
int node_id1node_id2node_id3;
hash(hostIp1strlen(hostIp1)&node_id1);
hash(hostIp2strlen(hostIp2)&node_id2);
hash(hostIp3strlen(hostIp3)&node_id3);
printf(“node_id1=%dnode_id2=%dnode_id3=%d\n“node_id1node_id2node_id3);
node_table[node_id1].bon_ = true;
node_table[node_id2].bon_ = true;
node_table[node_id3].bon_ = true;
//(a+2^(k-i))mod 2^m 1<= k<=m
int t = set_table(node_tablenode_id1);
printf(“t = %d“t);
getchar();
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-04-16 13:59 Chord\
目录 0 2013-04-16 13:59 Chord\Chord\
文件 882 2013-03-25 23:59 Chord\Chord.sln
文件 33280 2013-04-05 17:07 Chord\Chord.suo
文件 2369 2013-03-27 01:29 Chord\Chord\Chord.cpp
文件 5269 2013-04-04 20:00 Chord\Chord\Chord.vcxproj
文件 3145 2013-04-04 20:00 Chord\Chord\Chord.vcxproj.filters
文件 143 2013-03-25 23:59 Chord\Chord\Chord.vcxproj.user
文件 11892 2013-04-05 17:00 Chord\Chord\chordring.cpp
文件 1702 2013-04-05 16:29 Chord\Chord\chordring.h
文件 3892 2013-04-04 18:18 Chord\Chord\circulli
文件 497 2013-04-05 16:04 Chord\Chord\commonEnv.cpp
文件 416 2013-04-05 16:03 Chord\Chord\commonEnv.h
文件 1820 2013-04-05 14:11 Chord\Chord\debuger.cpp
文件 1068 2013-04-05 15:25 Chord\Chord\debuger.h
文件 668 2013-04-05 16:33 Chord\Chord\environment.cpp
文件 620 2013-04-05 16:41 Chord\Chord\environment.h
文件 5042 2013-04-05 15:54 Chord\Chord\fingerTable.cpp
文件 1311 2013-04-05 15:51 Chord\Chord\fingerTable.h
文件 1963 2013-04-05 15:21 Chord\Chord\hash.cpp
文件 1087 2013-04-05 15:18 Chord\Chord\hash.h
文件 3215 2013-04-05 16:00 Chord\Chord\keyTable.cpp
文件 1057 2013-04-05 16:01 Chord\Chord\keyTable.h
文件 5408 2013-04-05 16:01 Chord\Chord\li
文件 4319 2013-04-05 17:07 Chord\Chord\main.cpp
文件 7149 2013-04-05 15:37 Chord\Chord\node.cpp
文件 1634 2013-04-05 15:26 Chord\Chord\node.h
文件 1539 2013-03-25 23:59 Chord\Chord\ReadMe.txt
文件 210 2013-03-25 23:59 Chord\Chord\stdafx.cpp
文件 260 2013-04-02 21:21 Chord\Chord\stdafx.h
文件 236 2013-03-25 23:59 Chord\Chord\targetver.h
............此处省略4个文件信息
- 上一篇:垂直裂缝井水平裂缝井试井源码
- 下一篇:20-sim介绍
评论
共有 条评论