f99aq8ove's blog

キー交換のどーのこーの

tag:
04 November 2004

このエントリは 2004-11-04 に書かれました。 内容が古くなっていたり、もはや正しくないこともありますので、十分検証を行ってください。

変な擬似コードでメモ

・起動直後は全ノード firewalled。外部からの接続を検出した段階で firewalled = false に

自ノード←─→B(他o2onノード)

class Key {
string guid;
unsigned long addr;
unsigned short port;
bool firewalled;// デフォルトでfalse
//以下省略
}

自分がキャッシュを保持しているキーは各ノード addr=127.0.0.1, port=自port として保持しておく

Bからキーが入ってきたとき
if (addr == 127.0.0.1) {
addr = B Addr
// port そのまま
firewalled flagもキーに書き込む(Bがfirewalledかどうか)
} else {
そのまま
firewalledはfalseのはず
}

Bにキーを投げるとき
if (addr != B Addr) {
if (firewalled) {
addr = My Addr
port = My Port
} else {
if (転送するか) {
addr = My Addr
port = My Port
}
}
}

Related Posts