Documentation
¶
Overview ¶
STUN 客户端。 实现 NAT 层级探测(STUN:Cone/Sym)和生存期探测(STUN:Live)的逻辑。
Index ¶
- Variables
- type Client
- func (c *Client) Close()
- func (c *Client) Dial() error
- func (c *Client) Dialled() bool
- func (c *Client) LinkPeer(nat NatLevel, data []byte) *stun.Peer
- func (c *Client) PubAddr() *net.UDPAddr
- func (c *Client) Serve(ctx context.Context) *Client
- func (c *Client) SetCmpAddr(addr *net.UDPAddr)
- func (c *Client) SetInfo(ip netip.Addr, serv *stun.ServInfo)
- type ClientSN
- type NatLevel
- type Rnd16
- type STUNTester
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // UDP拨号错误 ErrDialUDP = errors.New("dial to server udp failed") // 客户端UDP地址未探测 ErrNotAddr = errors.New("client udp addr is empty") )
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct { LevCone chan NatLevel // NAT 层级通知(STUN:Cone) LevSym chan NatLevel // NAT 层级通知(STUN:Sym) Live chan time.Duration // NAT 生存期通知 UDPeer chan *net.UDPAddr // 客户端UDP地址通知 Tester chan STUNTester // STUN 测试类型 // contains filtered or unexported fields }
Client 作为客户端的Finder 其中conn为主监听地址,用于STUN:Cone|Sym通讯, 以及STUN:Live的旧地址(端口)使用。 注记: 将 STUN:Cone|Sym 的通知分开更安全。
func (*Client) LinkPeer ¶
LinkPeer 提取关联节点。 专用于与其它UDP节点打洞和通讯, 这需要在用户已经获知当前节点的NAT层级之后才能使用。 注: 使用最后一次 STUN:Cone 或 STUN:Sym 探测的端口。 也即:用户需要首先探知自己的公网UDP地址。 提示: 如果用户已知自己节点的NAT层级, 获取公网UDP地址可以仅由简单的 STUN:Sym 请求实现。
@nat 自身NAT层级 @data 附带数据,可选 @return 打洞关联节点
func (*Client) SetCmpAddr ¶
SetCmpAddr 设置对比地址 即之前 STUN:Cone 请求获得的地址。
type STUNTester ¶
type STUNTester int
STUNTester NAT测试类型
const ( STUN_CONE STUNTester = 1 + iota // STUN:Cone STUN_SYM // STUN:Sym STUN_LIVE // STUN:Live )
Click to show internal directories.
Click to hide internal directories.