EOS代码分析6 P2P主动握手过程


主动链接对端
connect( seed_node ); 链接peer节点
if (start_session( c )) { c->send_handshake (); //发送握手协议 }
c->send_handshake (); //初始化结构体,发送握手协议,协议最后要enqueue
handshake_initializer::populate
queue_write(); 发送缓冲过去[发送缓冲后,如何把缓冲发送过去?]主动发送的握手数据内容
void
handshake_initializer::populate( handshake_message &hello) {
hello.network_version = net_version_base + net_version;
hello.chain_id = my_impl->chain_id; //系统选项可以设定
hello.node_id = my_impl->node_id;
hello.key = my_impl->get_authentication_key(); //公钥
hello.time = std::chrono::system_clock::now().time_since_epoch().count();
hello.token = fc::sha256::hash(hello.time);
hello.sig = my_impl->sign_compact(hello.key, hello.token);
// If we couldn’t sign, don’t send a token.
if(hello.sig == chain::signature_type())
hello.token = sha256();
hello.p2p_address = my_impl->p2p_address + ” – ” + hello.node_id.s免费云主机域名tr().substr(0,7);
#if defined( APPLE )
hello.os = “osx”;
#elif defined( linux )
hello.os = “linux”;
#elif defined( _MSC_VER )
hello.os = “win32”;
#else
hello.os = “other”;
#endif
hello.agent = my_impl->user_agent_name;}

相关推荐: 常见网络端口号

1、 21 ftp (文件传输控制,20默认)2、 22 SSH远程登录3、 23 Telnet4、 25 smtp 发送 110 pop3 接收5、 80 http6、 92 网络打印7、 443 httpsnetstat免费云主机域名 -an 查看系统所有…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/31 15:50
下一篇 01/31 17:55