Documentation ¶
Overview ¶
Package stun is a STUN (RFC 3489 and RFC 5389) client implementation in golang.
It is extremely easy to use -- just one line of code.
nat, host, err := stun.NewClient().Discover()
More details please go to `main.go`.
Index ¶
- Constants
- type Client
- func (c *Client) Discover(serverAddr string) (NATType, *Host, error)
- func (c *Client) DiscoverAddr(serverAddr *net.UDPAddr) (NATType, *Host, error)
- func (c *Client) Keepalive(serverAddr string) (*Host, error)
- func (c *Client) KeepaliveAddr(serverAddr *net.UDPAddr) (*Host, error)
- func (c *Client) SetSoftwareName(name string)
- func (c *Client) SetVVerbose(v bool)
- func (c *Client) SetVerbose(v bool)
- type ClientConfig
- type Host
- type Logger
- func (l *Logger) Debug(v ...interface{})
- func (l *Logger) Debugf(format string, v ...interface{})
- func (l *Logger) Debugln(v ...interface{})
- func (l *Logger) Info(v ...interface{})
- func (l *Logger) Infof(format string, v ...interface{})
- func (l *Logger) Infoln(v ...interface{})
- func (l *Logger) SetDebug(v bool)
- func (l *Logger) SetInfo(v bool)
- type NATType
Constants ¶
const ( DefaultServerAddr = "stun.ekiga.net:3478" DefaultSoftwareName = "StunClient" )
Default server address and client name.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is a STUN client, which can be set STUN server address and is used to discover NAT type.
func NewClient ¶
func NewClient(config *ClientConfig) *Client
NewClient returns a client without network connection. The network connection will be build when calling Discover function.
func NewClientWithConnection ¶
func NewClientWithConnection(conn net.PacketConn, config *ClientConfig) *Client
NewClientWithConnection returns a client which uses the given connection. Please note the connection should be acquired via net.Listen* method.
func (*Client) DiscoverAddr ¶
DiscoverAddr contacts the STUN server and gets the response of NAT type, host for UDP punching.
func (*Client) KeepaliveAddr ¶
Keepalive sends and receives a bind request, which ensures the mapping stays open Only applicable when client was created with a connection.
func (*Client) SetSoftwareName ¶
SetSoftwareName allows user to set the name of the software, which is used for logging purpose (NOT used in the current implementation).
func (*Client) SetVVerbose ¶
SetVVerbose sets the client to be in the double verbose mode, which prints information and packet in the discover process.
func (*Client) SetVerbose ¶
SetVerbose sets the client to be in the verbose mode, which prints information in the discover process.
type ClientConfig ¶
func NewClientConfig ¶
func NewClientConfig() *ClientConfig
type Host ¶
type Host struct {
// contains filtered or unexported fields
}
Host defines the network address including address family, IP address and port.
func (*Host) TransportAddr ¶
TransportAddr returns the transport layer address of the host.
type Logger ¶
Logger is a simple logger specified for this STUN client.
func (*Logger) Debug ¶
func (l *Logger) Debug(v ...interface{})
Debug outputs the log in the format of log.Print.
func (*Logger) Debugln ¶
func (l *Logger) Debugln(v ...interface{})
Debugln outputs the log in the format of log.Println.
func (*Logger) Info ¶
func (l *Logger) Info(v ...interface{})
Info outputs the log in the format of log.Print.
func (*Logger) Infoln ¶
func (l *Logger) Infoln(v ...interface{})
Infoln outputs the log in the format of log.Println.
type NATType ¶
type NATType int
NATType is the type of NAT described by int.
const ( NATError NATType = iota NATUnknown NATNone NATBlocked NATFull NATSymmetric NATRestricted NATPortRestricted SymmetricUDPFirewall // Deprecated spellings of these constants NATSymetric = NATSymmetric NATSymetricUDPFirewall = SymmetricUDPFirewall NATSymmetricUDPFirewall = SymmetricUDPFirewall )
NAT types.