Skip to content
On this page

peer模块

peer模块主要是管理连接用的

看完peer模块,没啥感觉

peer主要是负责连接建立,然后进行一些基本的认证.

一个peer实际上就是一个一对一的连接, 如果是我主动与对方建立的连接,那么这个peer在我这里就是outbound peer. 如果是对方主动和我建立的连接,那么就是一个 inbound peer.

peer真正的使用者是btcd/server.go,哪里对一组peer进行管理.

这里的peer做的就是负责具体的发送消息,收到消息以后通过特定的接口通知上层(MessageListeners).

还有就是peer处理了连接并发操作问题,流量统计,连接保持(keep alive)等.

内部关键结构

go
// MessageListeners 负责如何处理收到的消息
//Config 是对peer的配置,创建时指定.
//Peer 这是最重要的,也是对外服务的出入口.
// 最重要的导出函数
// NewInboundPeer returns a new inbound bitcoin peer. Use Start to begin
// processing incoming and outgoing messages.
func NewInboundPeer(cfg *Config) *Peer {
 
// NewOutboundPeer returns a new outbound bitcoin peer.
func NewOutboundPeer(cfg *Config, addr string) (*Peer, error) 
\alpha \Alpha \\ \beta \Beta \\ \gamma \Gamma \\