Documentation ¶
Index ¶
- func AllIPAddr() string
- func BidiCopy(conn1, conn2 io.ReadWriteCloser, isClient bool) error
- func IsIPDualStack() bool
- func IsNilNetAddr(addr net.Addr) bool
- func IsZeroTime(t time.Time) bool
- func LocalIPAddr() string
- func MaybeDecorateIPv6(addr string) string
- func NilNetAddr() net.Addr
- func ReuseAddrPort(network, address string, conn syscall.RawConn) error
- func SendReceive(ctx context.Context, conn net.Conn, req []byte) (resp []byte, err error)
- func UnusedTCPPort() (int, error)
- func UnusedUDPPort() (int, error)
- func WaitForClose(conn net.Conn)
- func ZeroTime() time.Time
- type ConnHandler
- type DNSPolicy
- type DNSResolver
- type HierarchyConn
- type IPVersion
- type NetAddr
- type TransportProtocol
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllIPAddr ¶
func AllIPAddr() string
AllIPAddr returns a catch-all IP address to bind. If the machine supports IP dual stack, "::" is returned. Otherwise "0.0.0.0" is returned.
func BidiCopy ¶
func BidiCopy(conn1, conn2 io.ReadWriteCloser, isClient bool) error
BidiCopy does bi-directional data copy.
func IsIPDualStack ¶
func IsIPDualStack() bool
IsIPDualStack returns true if an IPv6 socket is able to send and receive both IPv4 and IPv6 packets.
This function only supports Linux. It always returns false if running other operating systems.
func IsNilNetAddr ¶
IsNilNetAddr returns true if the net.Addr is nil / empty.
func IsZeroTime ¶
IsZeroTime returns true if the input time is UNIX epoch.
func MaybeDecorateIPv6 ¶
MaybeDecorateIPv6 adds [ and ] before and after an IPv6 address. If the input string is a IPv4 address or not a valid IP address (e.g. is a domain), the same string is returned.
func ReuseAddrPort ¶
ReuseAddrPort sets SO_REUSEADDR and SO_REUSEPORT options to a given connection.
func SendReceive ¶
SendReceive sends a request to the connection and returns the response. The maxinum size of response is 4096 bytes.
func WaitForClose ¶
WaitForClose blocks the go routine. It returns when the peer closes the connection. In the meanwhile, everything send by the peer is discarded.
Types ¶
type ConnHandler ¶
type ConnHandler interface { // Take grabs the ownership of the network connection. // The function returns when the handler returns the ownership. Take(net.Conn) (closed bool, err error) }
ConnHandler defines a generic handler that can take the ownership of a network connection.
type DNSResolver ¶
type DNSResolver struct {
DNSPolicy DNSPolicy
}
DNSResolver uses Golang's default DNS implementation to resolve host names.
type HierarchyConn ¶
HierarchyConn closes sub-connections when this connection is closed.
func WrapHierarchyConn ¶
func WrapHierarchyConn(conn net.Conn) HierarchyConn
WrapHierarchyConn wraps an existing connection with HierarchyConn.
type IPVersion ¶
type IPVersion uint8
func GetIPVersion ¶
GetIPVersion returns the IP version of the given network address.
type TransportProtocol ¶
type TransportProtocol uint8
const ( UnknownTransport TransportProtocol = iota UDPTransport TCPTransport )