Spec-Zone.ru › Go

Пакет net

  • import "net"
  • Обзор
  • Указатель
  • Примеры
  • Подкаталоги

Обзор

Пакет net предоставляет переносимый интерфейс для сетевого ввода-вывода, включая TCP/IP, UDP, разрешение доменных имён и сокеты домена Unix.

Хотя пакет предоставляет доступ к низкоуровневым сетевым примитивам, большинству клиентов потребуются только базовый интерфейс, предоставляемый функциями Dial, Listen и Accept, а также связанные с ними интерфейсы Conn и Listener. Пакет crypto/tls использует те же интерфейсы и похожие функции Dial и Listen.

Функция Dial устанавливает соединение с сервером:

conn, err := net.Dial("tcp", "golang.org:80")
if err != nil {
	// handle error
}
fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n")
status, err := bufio.NewReader(conn).ReadString('\n')
// ...

Функция Listen создаёт серверы:

ln, err := net.Listen("tcp", ":8080")
if err != nil {
	// handle error
}
for {
	conn, err := ln.Accept()
	if err != nil {
		// handle error
	}
	go handleConnection(conn)
}

Разрешение имён

Способ разрешения доменных имён — косвенно, с помощью таких функций, как Dial, или напрямую, с помощью таких функций, как LookupHost и LookupAddr, — зависит от операционной системы.

В Unix-системах для разрешения имён используются два варианта резолвера. Можно использовать чистый резолвер Go, который отправляет DNS-запросы непосредственно серверам, перечисленным в /etc/resolv.conf, или резолвер на основе cgo, который вызывает процедуры библиотеки C, такие как getaddrinfo и getnameinfo.

В Unix чистый резолвер Go предпочтительнее резолвера cgo, поскольку заблокированный DNS-запрос занимает только горутину, тогда как заблокированный вызов C занимает поток операционной системы. Если cgo доступен, вместо него при различных условиях используется резолвер на основе cgo: в системах, которые не позволяют программам отправлять DNS-запросы напрямую (OS X); если задана переменная окружения LOCALDOMAIN (даже если она пуста); если переменная окружения RES_OPTIONS или HOSTALIASES непуста; если переменная окружения ASR_CONFIG непуста (только OpenBSD); а также если в /etc/resolv.conf или /etc/nsswitch.conf указано использование возможностей, не реализованных резолвером Go.

Во всех системах (кроме Plan 9), когда используется резолвер cgo, этот пакет ограничивает количество параллельных вызовов cgo, чтобы предотвратить исчерпание системных потоков. В настоящее время ограничение составляет 500 параллельных запросов.

Решение о выборе резолвера можно переопределить, задав значение netdns переменной окружения GODEBUG (см. пакет runtime) равным go или cgo, например:

export GODEBUG=netdns=go    # force pure Go resolver
export GODEBUG=netdns=cgo   # force native resolver (cgo, win32)

Принудительно задать выбор также можно при сборке дерева исходного кода Go, установив тег сборки netgo или netcgo. Тег сборки netgo полностью отключает использование встроенного (CGO) резолвера, то есть единственным доступным резолвером будет резолвер Go. При использовании тега сборки netcgo встроенный и чистый резолвер Go компилируются в двоичный файл, но предпочтение отдаётся встроенному (CGO) резолверу. При использовании netcgo резолвер Go всё ещё можно принудительно включить во время выполнения с помощью GODEBUG=netdns=go.

Числовое значение netdns, например GODEBUG=netdns=1, заставляет резолвер выводить отладочную информацию о принятых решениях. Чтобы принудительно выбрать определённый резолвер и одновременно включить вывод отладочной информации, объедините два значения знаком «плюс», например GODEBUG=netdns=go+1.

Резолвер Go отправляет с DNS-запросом дополнительный заголовок EDNS0, сообщая о готовности принимать DNS-пакеты большего размера. По имеющимся сведениям, это может вызывать периодические сбои при работе с DNS-серверами некоторых модемов и маршрутизаторов. Установка GODEBUG=netedns0=0 отключает отправку дополнительного заголовка.

В macOS, если код Go, использующий пакет net, собран с параметром -buildmode=c-archive, при компоновке полученного архива в программу на C необходимо передать параметр -lresolv.

В Plan 9 резолвер всегда обращается к /net/cs и /net/dns.

В Windows в Go 1.18.x и более ранних версиях резолвер всегда использовал функции библиотеки C, такие как GetAddrInfo и DnsQuery.

Указатель

  • Константы
  • Переменные
  • func JoinHostPort(host, port string) string
  • func LookupAddr(addr string) (names []string, err error)
  • func LookupCNAME(host string) (cname string, err error)
  • func LookupHost(host string) (addrs []string, err error)
  • func LookupPort(network, service string) (port int, err error)
  • func LookupTXT(name string) ([]string, error)
  • func ParseCIDR(s string) (IP, *IPNet, error)
  • func Pipe() (Conn, Conn)
  • func SplitHostPort(hostport string) (host, port string, err error)
  • type Addr
  • func InterfaceAddrs() ([]Addr, error)
  • type AddrError
  • func (e *AddrError) Error() string
  • func (e *AddrError) Temporary() bool
  • func (e *AddrError) Timeout() bool
  • type Buffers
  • func (v *Buffers) Read(p []byte) (n int, err error)
  • func (v *Buffers) WriteTo(w io.Writer) (n int64, err error)
  • type Conn
  • func Dial(network, address string) (Conn, error)
  • func DialTimeout(network, address string, timeout time.Duration) (Conn, error)
  • func FileConn(f *os.File) (c Conn, err error)
  • type DNSConfigError
  • func (e *DNSConfigError) Error() string
  • func (e *DNSConfigError) Temporary() bool
  • func (e *DNSConfigError) Timeout() bool
  • func (e *DNSConfigError) Unwrap() error
  • type DNSError
  • func (e *DNSError) Error() string
  • func (e *DNSError) Temporary() bool
  • func (e *DNSError) Timeout() bool
  • func (e *DNSError) Unwrap() error
  • type Dialer
  • func (d *Dialer) Dial(network, address string) (Conn, error)
  • func (d *Dialer) DialContext(ctx context.Context, network, address string) (Conn, error)
  • func (d *Dialer) DialIP(ctx context.Context, network string, laddr netip.Addr, raddr netip.Addr) (*IPConn, error)
  • func (d *Dialer) DialTCP(ctx context.Context, network string, laddr netip.AddrPort, raddr netip.AddrPort) (*TCPConn, error)
  • func (d *Dialer) DialUDP(ctx context.Context, network string, laddr netip.AddrPort, raddr netip.AddrPort) (*UDPConn, error)
  • func (d *Dialer) DialUnix(ctx context.Context, network string, laddr *UnixAddr, raddr *UnixAddr) (*UnixConn, error)
  • func (d *Dialer) MultipathTCP() bool
  • func (d *Dialer) SetMultipathTCP(use bool)
  • type Error
  • type Flags
  • func (f Flags) String() string
  • type HardwareAddr
  • func ParseMAC(s string) (hw HardwareAddr, err error)
  • func (a HardwareAddr) String() string
  • type IP
  • func IPv4(a, b, c, d byte) IP
  • func LookupIP(host string) ([]IP, error)
  • func ParseIP(s string) IP
  • func (ip IP) AppendText(b []byte) ([]byte, error)
  • func (ip IP) DefaultMask() IPMask
  • func (ip IP) Equal(x IP) bool
  • func (ip IP) IsGlobalUnicast() bool
  • func (ip IP) IsInterfaceLocalMulticast() bool
  • func (ip IP) IsLinkLocalMulticast() bool
  • func (ip IP) IsLinkLocalUnicast() bool
  • func (ip IP) IsLoopback() bool
  • func (ip IP) IsMulticast() bool
  • func (ip IP) IsPrivate() bool
  • func (ip IP) IsUnspecified() bool
  • func (ip IP) MarshalText() ([]byte, error)
  • func (ip IP) Mask(mask IPMask) IP
  • func (ip IP) String() string
  • func (ip IP) To16() IP
  • func (ip IP) To4() IP
  • func (ip *IP) UnmarshalText(text []byte) error
  • type IPAddr
  • func ResolveIPAddr(network, address string) (*IPAddr, error)
  • func (a *IPAddr) Network() string
  • func (a *IPAddr) String() string
  • type IPConn
  • func DialIP(network string, laddr, raddr *IPAddr) (*IPConn, error)
  • func ListenIP(network string, laddr *IPAddr) (*IPConn, error)
  • func (c *IPConn) Close() error
  • func (c *IPConn) File() (f *os.File, err error)
  • func (c *IPConn) LocalAddr() Addr
  • func (c *IPConn) Read(b []byte) (int, error)
  • func (c *IPConn) ReadFrom(b []byte) (int, Addr, error)
  • func (c *IPConn) ReadFromIP(b []byte) (int, *IPAddr, error)
  • func (c *IPConn) ReadMsgIP(b, oob []byte) (n, oobn, flags int, addr *IPAddr, err error)
  • func (c *IPConn) RemoteAddr() Addr
  • func (c *IPConn) SetDeadline(t time.Time) error
  • func (c *IPConn) SetReadBuffer(bytes int) error
  • func (c *IPConn) SetReadDeadline(t time.Time) error
  • func (c *IPConn) SetWriteBuffer(bytes int) error
  • func (c *IPConn) SetWriteDeadline(t time.Time) error
  • func (c *IPConn) SyscallConn() (syscall.RawConn, error)
  • func (c *IPConn) Write(b []byte) (int, error)
  • func (c *IPConn) WriteMsgIP(b, oob []byte, addr *IPAddr) (n, oobn int, err error)
  • func (c *IPConn) WriteTo(b []byte, addr Addr) (int, error)
  • func (c *IPConn) WriteToIP(b []byte, addr *IPAddr) (int, error)
  • type IPMask
  • func CIDRMask(ones, bits int) IPMask
  • func IPv4Mask(a, b, c, d byte) IPMask
  • func (m IPMask) Size() (ones, bits int)
  • func (m IPMask) String() string
  • type IPNet
  • func (n *IPNet) Contains(ip IP) bool
  • func (n *IPNet) Network() string
  • func (n *IPNet) String() string
  • type Interface
  • func InterfaceByIndex(index int) (*Interface, error)
  • func InterfaceByName(name string) (*Interface, error)
  • func Interfaces() ([]Interface, error)
  • func (ifi *Interface) Addrs() ([]Addr, error)
  • func (ifi *Interface) MulticastAddrs() ([]Addr, error)
  • type InvalidAddrError
  • func (e InvalidAddrError) Error() string
  • func (e InvalidAddrError) Temporary() bool
  • func (e InvalidAddrError) Timeout() bool
  • type KeepAliveConfig
  • type ListenConfig
  • func (lc *ListenConfig) Listen(ctx context.Context, network, address string) (Listener, error)
  • func (lc *ListenConfig) ListenPacket(ctx context.Context, network, address string) (PacketConn, error)
  • func (lc *ListenConfig) MultipathTCP() bool
  • func (lc *ListenConfig) SetMultipathTCP(use bool)
  • type Listener
  • func FileListener(f *os.File) (ln Listener, err error)
  • func Listen(network, address string) (Listener, error)
  • type MX
  • func LookupMX(name string) ([]*MX, error)
  • type NS
  • func LookupNS(name string) ([]*NS, error)
  • type OpError
  • func (e *OpError) Error() string
  • func (e *OpError) Temporary() bool
  • func (e *OpError) Timeout() bool
  • func (e *OpError) Unwrap() error
  • type PacketConn
  • func FilePacketConn(f *os.File) (c PacketConn, err error)
  • func ListenPacket(network, address string) (PacketConn, error)
  • type ParseError
  • func (e *ParseError) Error() string
  • func (e *ParseError) Temporary() bool
  • func (e *ParseError) Timeout() bool
  • type Resolver
  • func (r *Resolver) LookupAddr(ctx context.Context, addr string) ([]string, error)
  • func (r *Resolver) LookupCNAME(ctx context.Context, host string) (string, error)
  • func (r *Resolver) LookupHost(ctx context.Context, host string) (addrs []string, err error)
  • func (r *Resolver) LookupIP(ctx context.Context, network, host string) ([]IP, error)
  • func (r *Resolver) LookupIPAddr(ctx context.Context, host string) ([]IPAddr, error)
  • func (r *Resolver) LookupMX(ctx context.Context, name string) ([]*MX, error)
  • func (r *Resolver) LookupNS(ctx context.Context, name string) ([]*NS, error)
  • func (r *Resolver) LookupNetIP(ctx context.Context, network, host string) ([]netip.Addr, error)
  • func (r *Resolver) LookupPort(ctx context.Context, network, service string) (port int, err error)
  • func (r *Resolver) LookupSRV(ctx context.Context, service, proto, name string) (string, []*SRV, error)
  • func (r *Resolver) LookupTXT(ctx context.Context, name string) ([]string, error)
  • type SRV
  • func LookupSRV(service, proto, name string) (cname string, addrs []*SRV, err error)
  • type TCPAddr
  • func ResolveTCPAddr(network, address string) (*TCPAddr, error)
  • func TCPAddrFromAddrPort(addr netip.AddrPort) *TCPAddr
  • func (a *TCPAddr) AddrPort() netip.AddrPort
  • func (a *TCPAddr) Network() string
  • func (a *TCPAddr) String() string
  • type TCPConn
  • func DialTCP(network string, laddr, raddr *TCPAddr) (*TCPConn, error)
  • func (c *TCPConn) Close() error
  • func (c *TCPConn) CloseRead() error
  • func (c *TCPConn) CloseWrite() error
  • func (c *TCPConn) File() (f *os.File, err error)
  • func (c *TCPConn) LocalAddr() Addr
  • func (c *TCPConn) MultipathTCP() (bool, error)
  • func (c *TCPConn) Read(b []byte) (int, error)
  • func (c *TCPConn) ReadFrom(r io.Reader) (int64, error)
  • func (c *TCPConn) RemoteAddr() Addr
  • func (c *TCPConn) SetDeadline(t time.Time) error
  • func (c *TCPConn) SetKeepAlive(keepalive bool) error
  • func (c *TCPConn) SetKeepAliveConfig(config KeepAliveConfig) error
  • func (c *TCPConn) SetKeepAlivePeriod(d time.Duration) error
  • func (c *TCPConn) SetLinger(sec int) error
  • func (c *TCPConn) SetNoDelay(noDelay bool) error
  • func (c *TCPConn) SetReadBuffer(bytes int) error
  • func (c *TCPConn) SetReadDeadline(t time.Time) error
  • func (c *TCPConn) SetWriteBuffer(bytes int) error
  • func (c *TCPConn) SetWriteDeadline(t time.Time) error
  • func (c *TCPConn) SyscallConn() (syscall.RawConn, error)
  • func (c *TCPConn) Write(b []byte) (int, error)
  • func (c *TCPConn) WriteTo(w io.Writer) (int64, error)
  • type TCPListener
  • func ListenTCP(network string, laddr *TCPAddr) (*TCPListener, error)
  • func (l *TCPListener) Accept() (Conn, error)
  • func (l *TCPListener) AcceptTCP() (*TCPConn, error)
  • func (l *TCPListener) Addr() Addr
  • func (l *TCPListener) Close() error
  • func (l *TCPListener) File() (f *os.File, err error)
  • func (l *TCPListener) SetDeadline(t time.Time) error
  • func (l *TCPListener) SyscallConn() (syscall.RawConn, error)
  • type UDPAddr
  • func ResolveUDPAddr(network, address string) (*UDPAddr, error)
  • func UDPAddrFromAddrPort(addr netip.AddrPort) *UDPAddr
  • func (a *UDPAddr) AddrPort() netip.AddrPort
  • func (a *UDPAddr) Network() string
  • func (a *UDPAddr) String() string
  • type UDPConn
  • func DialUDP(network string, laddr, raddr *UDPAddr) (*UDPConn, error)
  • func ListenMulticastUDP(network string, ifi *Interface, gaddr *UDPAddr) (*UDPConn, error)
  • func ListenUDP(network string, laddr *UDPAddr) (*UDPConn, error)
  • func (c *UDPConn) Close() error
  • func (c *UDPConn) File() (f *os.File, err error)
  • func (c *UDPConn) LocalAddr() Addr
  • func (c *UDPConn) Read(b []byte) (int, error)
  • func (c *UDPConn) ReadFrom(b []byte) (int, Addr, error)
  • func (c *UDPConn) ReadFromUDP(b []byte) (n int, addr *UDPAddr, err error)
  • func (c *UDPConn) ReadFromUDPAddrPort(b []byte) (n int, addr netip.AddrPort, err error)
  • func (c *UDPConn) ReadMsgUDP(b, oob []byte) (n, oobn, flags int, addr *UDPAddr, err error)
  • func (c *UDPConn) ReadMsgUDPAddrPort(b, oob []byte) (n, oobn, flags int, addr netip.AddrPort, err error)
  • func (c *UDPConn) RemoteAddr() Addr
  • func (c *UDPConn) SetDeadline(t time.Time) error
  • func (c *UDPConn) SetReadBuffer(bytes int) error
  • func (c *UDPConn) SetReadDeadline(t time.Time) error
  • func (c *UDPConn) SetWriteBuffer(bytes int) error
  • func (c *UDPConn) SetWriteDeadline(t time.Time) error
  • func (c *UDPConn) SyscallConn() (syscall.RawConn, error)
  • func (c *UDPConn) Write(b []byte) (int, error)
  • func (c *UDPConn) WriteMsgUDP(b, oob []byte, addr *UDPAddr) (n, oobn int, err error)
  • func (c *UDPConn) WriteMsgUDPAddrPort(b, oob []byte, addr netip.AddrPort) (n, oobn int, err error)
  • func (c *UDPConn) WriteTo(b []byte, addr Addr) (int, error)
  • func (c *UDPConn) WriteToUDP(b []byte, addr *UDPAddr) (int, error)
  • func (c *UDPConn) WriteToUDPAddrPort(b []byte, addr netip.AddrPort) (int, error)
  • type UnixAddr
  • func ResolveUnixAddr(network, address string) (*UnixAddr, error)
  • func (a *UnixAddr) Network() string
  • func (a *UnixAddr) String() string
  • type UnixConn
  • func DialUnix(network string, laddr, raddr *UnixAddr) (*UnixConn, error)
  • func ListenUnixgram(network string, laddr *UnixAddr) (*UnixConn, error)
  • func (c *UnixConn) Close() error
  • func (c *UnixConn) CloseRead() error
  • func (c *UnixConn) CloseWrite() error
  • func (c *UnixConn) File() (f *os.File, err error)
  • func (c *UnixConn) LocalAddr() Addr
  • func (c *UnixConn) Read(b []byte) (int, error)
  • func (c *UnixConn) ReadFrom(b []byte) (int, Addr, error)
  • func (c *UnixConn) ReadFromUnix(b []byte) (int, *UnixAddr, error)
  • func (c *UnixConn) ReadMsgUnix(b, oob []byte) (n, oobn, flags int, addr *UnixAddr, err error)
  • func (c *UnixConn) RemoteAddr() Addr
  • func (c *UnixConn) SetDeadline(t time.Time) error
  • func (c *UnixConn) SetReadBuffer(bytes int) error
  • func (c *UnixConn) SetReadDeadline(t time.Time) error
  • func (c *UnixConn) SetWriteBuffer(bytes int) error
  • func (c *UnixConn) SetWriteDeadline(t time.Time) error
  • func (c *UnixConn) SyscallConn() (syscall.RawConn, error)
  • func (c *UnixConn) Write(b []byte) (int, error)
  • func (c *UnixConn) WriteMsgUnix(b, oob []byte, addr *UnixAddr) (n, oobn int, err error)
  • func (c *UnixConn) WriteTo(b []byte, addr Addr) (int, error)
  • func (c *UnixConn) WriteToUnix(b []byte, addr *UnixAddr) (int, error)
  • type UnixListener
  • func ListenUnix(network string, laddr *UnixAddr) (*UnixListener, error)
  • func (l *UnixListener) Accept() (Conn, error)
  • func (l *UnixListener) AcceptUnix() (*UnixConn, error)
  • func (l *UnixListener) Addr() Addr
  • func (l *UnixListener) Close() error
  • func (l *UnixListener) File() (f *os.File, err error)
  • func (l *UnixListener) SetDeadline(t time.Time) error
  • func (l *UnixListener) SetUnlinkOnClose(unlink bool)
  • func (l *UnixListener) SyscallConn() (syscall.RawConn, error)
  • type UnknownNetworkError
  • func (e UnknownNetworkError) Error() string
  • func (e UnknownNetworkError) Temporary() bool
  • func (e UnknownNetworkError) Timeout() bool
  • Ошибки

Примеры

CIDRMask
Dialer
Dialer (Unix)
IP.DefaultMask
IP.Equal
IP.IsGlobalUnicast
IP.IsInterfaceLocalMulticast
IP.IsLinkLocalMulticast
IP.IsLinkLocalUnicast
IP.IsLoopback
IP.IsMulticast
IP.IsPrivate
IP.IsUnspecified
IP.Mask
IP.String
IP.To16
IP.To4
IPv4
IPv4Mask
Listener
ParseCIDR
ParseIP
UDPConn.WriteTo

Файлы пакета

addrselect.go cgo_linux.go cgo_resnew.go cgo_socknew.go cgo_unix.go cgo_unix_cgo.go cgo_unix_cgo_res.go conf.go dial.go dnsclient.go dnsclient_unix.go dnsconfig.go dnsconfig_unix.go error_posix.go error_unix.go fd_posix.go fd_unix.go file.go file_posix.go file_unix.go hook.go hook_unix.go hosts.go interface.go interface_linux.go ip.go iprawsock.go iprawsock_posix.go ipsock.go ipsock_posix.go lookup.go lookup_unix.go mac.go mptcpsock_linux.go net.go netcgo_off.go netgo_off.go nss.go parse.go pipe.go port.go port_unix.go rawconn.go rlimit_unix.go sendfile.go sendfile_nonwindows.go sock_cloexec.go sock_linux.go sock_posix.go sockaddr_posix.go sockopt_linux.go sockopt_posix.go sockoptip4_linux.go sockoptip6_posix.go splice_linux.go tcpsock.go tcpsock_posix.go tcpsock_unix.go tcpsockopt_posix.go tcpsockopt_unix.go udpsock.go udpsock_posix.go unixsock.go unixsock_posix.go unixsock_readmsg_cmsg_cloexec.go writev_unix.go

Константы

Длины IP-адресов (в байтах).

const (
    IPv4len = 4
    IPv6len = 16
)

Переменные

Общеизвестные адреса IPv4

var (
    IPv4bcast     = IPv4(255, 255, 255, 255) // limited broadcast
    IPv4allsys    = IPv4(224, 0, 0, 1)       // all systems
    IPv4allrouter = IPv4(224, 0, 0, 2)       // all routers
    IPv4zero      = IPv4(0, 0, 0, 0)         // all zeros
)

Общеизвестные адреса IPv6

var (
    IPv6zero                   = IP{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
    IPv6unspecified            = IP{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
    IPv6loopback               = IP{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}
    IPv6interfacelocalallnodes = IP{0xff, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x01}
    IPv6linklocalallnodes      = IP{0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x01}
    IPv6linklocalallrouters    = IP{0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x02}
)

DefaultResolver — резолвер, используемый функциями Lookup на уровне пакета и Dialer, для которых не задан Resolver.

var DefaultResolver = &Resolver{}

ErrClosed — ошибка, возвращаемая при вызове операции ввода-вывода для сетевого соединения, которое уже закрыто или закрывается другой горутиной до завершения операции ввода-вывода. Она может быть обёрнута в другую ошибку; обычно её следует проверять с помощью errors.Is(err, net.ErrClosed).

var ErrClosed error = errClosed

Различные ошибки, содержащиеся в OpError.

var (
    ErrWriteToConnected = errors.New("use of WriteTo with pre-connected connection")
)

func JoinHostPort

func JoinHostPort(host, port string) string

JoinHostPort объединяет хост и порт в сетевой адрес вида "host:port". Если хост содержит двоеточие, как в буквальных IPv6-адресах, JoinHostPort возвращает "[host]:port".

Описание параметров host и port см. в функции Dial.

func LookupAddr

func LookupAddr(addr string) (names []string, err error)

LookupAddr выполняет обратный поиск для указанного адреса и возвращает список имён, соответствующих этому адресу.

Возвращаемые имена проверяются на соответствие формату представления доменных имён. Если в ответе содержатся некорректные имена, соответствующие записи отфильтровываются; вместе с оставшимися результатами, если они есть, возвращается ошибка.

При использовании системного резолвера библиотеки C возвращается не более одного результата. Чтобы обойти системный резолвер, используйте собственный Resolver.

LookupAddr использует внутри context.Background; чтобы указать контекст, используйте Resolver.LookupAddr.

func LookupCNAME

func LookupCNAME(host string) (cname string, err error)

LookupCNAME возвращает каноническое имя указанного хоста. Если вызывающему коду каноническое имя не требуется, можно напрямую вызвать LookupHost или LookupIP; обе функции разрешают каноническое имя в ходе поиска.

Каноническое имя — это итоговое имя после перехода по нулю или нескольким записям CNAME. LookupCNAME не возвращает ошибку, если хост не содержит DNS-записей "CNAME", при условии что для хоста найдены записи адресов.

Возвращаемое каноническое имя проверяется на соответствие формату представления доменных имён.

LookupCNAME использует внутри context.Background; чтобы указать контекст, используйте Resolver.LookupCNAME.

func LookupHost

func LookupHost(host string) (addrs []string, err error)

LookupHost ищет указанный хост с помощью локального резолвера. Функция возвращает срез адресов этого хоста.

LookupHost использует внутри context.Background; чтобы указать контекст, используйте Resolver.LookupHost.

func LookupPort

func LookupPort(network, service string) (port int, err error)

LookupPort ищет порт для указанной сети и службы.

LookupPort использует внутри context.Background; чтобы указать контекст, используйте Resolver.LookupPort.

func LookupTXT

func LookupTXT(name string) ([]string, error)

LookupTXT возвращает DNS-записи TXT для указанного доменного имени.

Если DNS-запись TXT содержит несколько строк, они объединяются в одну строку.

LookupTXT использует внутри context.Background; чтобы указать контекст, используйте Resolver.LookupTXT.

func ParseCIDR

func ParseCIDR(s string) (IP, *IPNet, error)

ParseCIDR разбирает строку s как IP-адрес в нотации CIDR с длиной префикса, например "192.0.2.0/24" или "2001:db8::/32", согласно определениям RFC 4632 и RFC 4291.

Функция возвращает IP-адрес и сеть, определяемую IP-адресом и длиной префикса. Например, ParseCIDR("192.0.2.1/24") возвращает IP-адрес 192.0.2.1 и сеть 192.0.2.0/24.

Пример

Код:

ipv4Addr, ipv4Net, err := net.ParseCIDR("192.0.2.1/24")
if err != nil {
    log.Fatal(err)
}
fmt.Println(ipv4Addr)
fmt.Println(ipv4Net)

ipv6Addr, ipv6Net, err := net.ParseCIDR("2001:db8:a0b:12f0::1/32")
if err != nil {
    log.Fatal(err)
}
fmt.Println(ipv6Addr)
fmt.Println(ipv6Net)

Вывод:

192.0.2.1
192.0.2.0/24
2001:db8:a0b:12f0::1
2001:db8::/32

func Pipe

func Pipe() (Conn, Conn)

Pipe создает синхронное полнодуплексное сетевое соединение в памяти; оба конца реализуют интерфейс Conn. Чтения на одном конце сопоставляются с записями на другом, напрямую копируя данные между ними; внутренней буферизации нет.

func SplitHostPort

func SplitHostPort(hostport string) (host, port string, err error)

SplitHostPort разделяет сетевой адрес формата "host:port", "host%zone:port", "[host]:port" или "[host%zone]:port" на host или host%zone и port.

Литеральный IPv6-адрес в hostport должен быть заключен в квадратные скобки, например "[::1]:80", "[::1%lo0]:80".

Описание параметра hostport и результатов host и port см. в описании функции Dial.

type Addr

Addr представляет адрес конечной точки сети.

Два метода Addr.Network и Addr.String обычно возвращают строки, которые можно передать в качестве аргументов функции Dial, однако точный формат и значение строк определяются реализацией.

type Addr interface {
    Network() string // name of the network (for example, "tcp", "udp")
    String() string  // string form of address (for example, "192.0.2.1:25", "[2001:db8::1]:80")
}

func InterfaceAddrs

func InterfaceAddrs() ([]Addr, error)

InterfaceAddrs возвращает список одноадресных адресов интерфейсов системы.

В возвращаемом списке не указан соответствующий интерфейс; для получения дополнительных сведений используйте Interfaces и Interface.Addrs.

type AddrError

type AddrError struct {
    Err  string
    Addr string
}

func (*AddrError) Error

func (e *AddrError) Error() string

func (*AddrError) Temporary

func (e *AddrError) Temporary() bool

func (*AddrError) Timeout

func (e *AddrError) Timeout() bool

type Buffers 1.8

Buffers содержит ноль или более последовательностей байтов для записи.

На некоторых машинах и для некоторых типов соединений это оптимизируется до пакетной операции записи, специфичной для ОС (например, "writev").

type Buffers [][]byte

func (*Buffers) Read 1.8

func (v *Buffers) Read(p []byte) (n int, err error)

Читает данные из буферов.

Read реализует интерфейс io.Reader для Buffers.

Read изменяет срез v, а также v[i] для 0 <= i < len(v), но не изменяет v[i][j] для любых i, j.

func (*Buffers) WriteTo 1.8

func (v *Buffers) WriteTo(w io.Writer) (n int64, err error)

WriteTo записывает содержимое буферов в w.

WriteTo реализует интерфейс io.WriterTo для Buffers.

WriteTo изменяет срез v, а также v[i] для 0 <= i < len(v), но не изменяет v[i][j] для любых i, j.

type Conn

Conn — это обобщенное потоковое сетевое соединение.

Несколько горутин могут одновременно вызывать методы Conn.

type Conn interface {
    // Read reads data from the connection.
    // Read can be made to time out and return an error after a fixed
    // time limit; see SetDeadline and SetReadDeadline.
    Read(b []byte) (n int, err error)

    // Write writes data to the connection.
    // Write can be made to time out and return an error after a fixed
    // time limit; see SetDeadline and SetWriteDeadline.
    Write(b []byte) (n int, err error)

    // Close closes the connection.
    // Any blocked Read or Write operations will be unblocked and return errors.
    // Close may or may not block until any buffered data is sent;
    // for TCP connections see [*TCPConn.SetLinger].
    Close() error

    // LocalAddr returns the local network address, if known.
    LocalAddr() Addr

    // RemoteAddr returns the remote network address, if known.
    RemoteAddr() Addr

    // SetDeadline sets the read and write deadlines associated
    // with the connection. It is equivalent to calling both
    // SetReadDeadline and SetWriteDeadline.
    //
    // A deadline is an absolute time after which I/O operations
    // fail instead of blocking. The deadline applies to all future
    // and pending I/O, not just the immediately following call to
    // Read or Write. After a deadline has been exceeded, the
    // connection can be refreshed by setting a deadline in the future.
    //
    // If the deadline is exceeded a call to Read or Write or to other
    // I/O methods will return an error that wraps os.ErrDeadlineExceeded.
    // This can be tested using errors.Is(err, os.ErrDeadlineExceeded).
    // The error's Timeout method will return true, but note that there
    // are other possible errors for which the Timeout method will
    // return true even if the deadline has not been exceeded.
    //
    // An idle timeout can be implemented by repeatedly extending
    // the deadline after successful Read or Write calls.
    //
    // A zero value for t means I/O operations will not time out.
    SetDeadline(t time.Time) error

    // SetReadDeadline sets the deadline for future Read calls
    // and any currently-blocked Read call.
    // A zero value for t means Read will not time out.
    SetReadDeadline(t time.Time) error

    // SetWriteDeadline sets the deadline for future Write calls
    // and any currently-blocked Write call.
    // Even if write times out, it may return n > 0, indicating that
    // some of the data was successfully written.
    // A zero value for t means Write will not time out.
    SetWriteDeadline(t time.Time) error
}

func Dial

func Dial(network, address string) (Conn, error)

Dial устанавливает соединение с адресом в указанной сети.

Поддерживаются сети "tcp", "tcp4" (только IPv4), "tcp6" (только IPv6), "udp", "udp4" (только IPv4), "udp6" (только IPv6), "ip", "ip4" (только IPv4), "ip6" (только IPv6), "unix", "unixgram" и "unixpacket".

Для сетей TCP и UDP адрес имеет формат "host:port". В качестве host должен быть указан буквальный IP-адрес или имя хоста, которое можно разрешить в IP-адреса. В качестве port должен быть указан буквальный номер порта или имя службы. Если host — буквальный IPv6-адрес, его необходимо заключить в квадратные скобки, например "[2001:db8::1]:80" или "[fe80::1%zone]:80". Зона определяет область действия буквального IPv6-адреса согласно RFC 4007. Функции JoinHostPort и SplitHostPort работают с парой host и port в этом формате. При использовании TCP, если host разрешается в несколько IP-адресов, Dial будет по очереди пробовать каждый IP-адрес, пока один из них не подойдет.

Примеры:

Dial("tcp", "golang.org:http")
Dial("tcp", "192.0.2.1:http")
Dial("tcp", "198.51.100.1:80")
Dial("udp", "[2001:db8::1]:domain")
Dial("udp", "[fe80::1%lo0]:53")
Dial("tcp", ":80")

Для IP-сетей в качестве сети должно быть указано "ip", "ip4" или "ip6", за которым следуют двоеточие и буквальный номер протокола либо его имя, а адрес имеет формат "host". В качестве host должен быть указан буквальный IP-адрес либо буквальный IPv6-адрес с зоной. Поведение операционной системы при указании номера протокола, не являющегося общеизвестным, например "0" или "255", зависит от конкретной операционной системы.

Примеры:

Dial("ip4:1", "192.0.2.1")
Dial("ip6:ipv6-icmp", "2001:db8::1")
Dial("ip6:58", "fe80::1%lo0")

Для сетей TCP, UDP и IP, если host пуст или указан буквальный неопределенный IP-адрес, например ":80", "0.0.0.0:80" или "[::]:80" для TCP и UDP, а также "", "0.0.0.0" или "::" для IP, предполагается локальная система.

Для сетей Unix адрес должен быть путем в файловой системе.

func DialTimeout

func DialTimeout(network, address string, timeout time.Duration) (Conn, error)

DialTimeout действует подобно Dial, но принимает время ожидания.

Время ожидания включает разрешение имени, если оно требуется. При использовании TCP, если host в параметре address разрешается в несколько IP-адресов, время ожидания распределяется между последовательными попытками подключения, так что каждой из них выделяется соответствующая доля времени.

Описание параметров network и address см. в описании функции Dial.

func FileConn

func FileConn(f *os.File) (c Conn, err error)

FileConn возвращает копию сетевого соединения, соответствующего открытому файлу f. После завершения работы вызывающий код должен закрыть f. Закрытие c не влияет на f, а закрытие f не влияет на c.

type DNSConfigError

DNSConfigError представляет ошибку чтения конфигурации DNS компьютера. (Больше не используется; сохранен для совместимости.)

type DNSConfigError struct {
    Err error
}

func (*DNSConfigError) Error

func (e *DNSConfigError) Error() string

func (*DNSConfigError) Temporary

func (e *DNSConfigError) Temporary() bool

func (*DNSConfigError) Timeout

func (e *DNSConfigError) Timeout() bool

func (*DNSConfigError) Unwrap 1.13

func (e *DNSConfigError) Unwrap() error

type DNSError

DNSError представляет ошибку поиска DNS.

type DNSError struct {
    UnwrapErr   error  // error returned by the [DNSError.Unwrap] method, might be nil; added in Go 1.23
    Err         string // description of the error
    Name        string // name looked for
    Server      string // server used
    IsTimeout   bool   // if true, timed out; not all timeouts set this
    IsTemporary bool   // if true, error is temporary; not all errors set this; added in Go 1.6

    // IsNotFound is set to true when the requested name does not
    // contain any records of the requested type (data not found),
    // or the name itself was not found (NXDOMAIN).
    IsNotFound bool // Go 1.13
}

func (*DNSError) Error

func (e *DNSError) Error() string

func (*DNSError) Temporary

func (e *DNSError) Temporary() bool

Temporary сообщает, известно ли, что ошибка DNS носит временный характер. Это не всегда известно: поиск DNS может завершиться с временной ошибкой и вернуть DNSError, для которого Temporary возвращает false.

func (*DNSError) Timeout

func (e *DNSError) Timeout() bool

Timeout сообщает, известно ли, что время ожидания поиска DNS истекло. Это не всегда известно: поиск DNS может завершиться из-за истечения времени ожидания и вернуть DNSError, для которого Timeout возвращает false.

func (*DNSError) Unwrap 1.23

func (e *DNSError) Unwrap() error

Unwrap возвращает e.UnwrapErr.

type Dialer 1.1

Dialer содержит параметры для подключения к адресу.

Нулевое значение каждого поля эквивалентно подключению без соответствующего параметра. Поэтому подключение с нулевым значением Dialer эквивалентно простому вызову функции Dial.

Методы Dialer можно безопасно вызывать параллельно.

type Dialer struct {
    // Timeout is the maximum amount of time a dial will wait for
    // a connect to complete. If Deadline is also set, it may fail
    // earlier.
    //
    // The default is no timeout.
    //
    // When using TCP and dialing a host name with multiple IP
    // addresses, the timeout may be divided between them.
    //
    // With or without a timeout, the operating system may impose
    // its own earlier timeout. For instance, TCP timeouts are
    // often around 3 minutes.
    Timeout time.Duration

    // Deadline is the absolute point in time after which dials
    // will fail. If Timeout is set, it may fail earlier.
    // Zero means no deadline, or dependent on the operating system
    // as with the Timeout option.
    Deadline time.Time

    // LocalAddr is the local address to use when dialing an
    // address. The address must be of a compatible type for the
    // network being dialed.
    // If nil, a local address is automatically chosen.
    LocalAddr Addr

    // DualStack previously enabled RFC 6555 Fast Fallback
    // support, also known as "Happy Eyeballs", in which IPv4 is
    // tried soon if IPv6 appears to be misconfigured and
    // hanging.
    //
    // Deprecated: Fast Fallback is enabled by default. To
    // disable, set FallbackDelay to a negative value.
    DualStack bool // Go 1.2

    // FallbackDelay specifies the length of time to wait before
    // spawning a RFC 6555 Fast Fallback connection.
    //
    // When dialing "tcp" and both IPv6 and IPv4 addresses are
    // available, the address family of the first resolved address
    // is treated as the primary. After FallbackDelay, a connection
    // attempt to the other address family is started if the primary
    // connection has not yet succeeded.
    //
    // If zero, a default delay of 300ms is used.
    // A negative value disables Fast Fallback support.
    FallbackDelay time.Duration // Go 1.5

    // KeepAlive specifies the interval between keep-alive
    // probes for an active network connection.
    //
    // KeepAlive is ignored if KeepAliveConfig.Enable is true.
    //
    // If zero, keep-alive probes are sent with a default value
    // (currently 15 seconds), if supported by the protocol and operating
    // system. Network protocols or operating systems that do
    // not support keep-alive ignore this field.
    // If negative, keep-alive probes are disabled.
    KeepAlive time.Duration // Go 1.3

    // KeepAliveConfig specifies the keep-alive probe configuration
    // for an active network connection, when supported by the
    // protocol and operating system.
    //
    // If KeepAliveConfig.Enable is true, keep-alive probes are enabled.
    // If KeepAliveConfig.Enable is false and KeepAlive is negative,
    // keep-alive probes are disabled.
    KeepAliveConfig KeepAliveConfig // Go 1.23

    // Resolver optionally specifies an alternate resolver to use.
    Resolver *Resolver // Go 1.8

    // Cancel is an optional channel whose closure indicates that
    // the dial should be canceled. Not all types of dials support
    // cancellation.
    //
    // Deprecated: Use DialContext instead.
    Cancel <-chan struct{} // Go 1.6

    // If Control is not nil, it is called after creating the network
    // connection but before actually dialing.
    //
    // Network and address parameters passed to Control function are not
    // necessarily the ones passed to Dial. Calling Dial with TCP networks
    // will cause the Control function to be called with "tcp4" or "tcp6",
    // UDP networks become "udp4" or "udp6", IP networks become "ip4" or "ip6",
    // and other known networks are passed as-is.
    //
    // Control is ignored if ControlContext is not nil.
    Control func(network, address string, c syscall.RawConn) error // Go 1.11

    // If ControlContext is not nil, it is called after creating the network
    // connection but before actually dialing.
    //
    // Network and address parameters passed to ControlContext function are not
    // necessarily the ones passed to Dial. Calling Dial with TCP networks
    // will cause the ControlContext function to be called with "tcp4" or "tcp6",
    // UDP networks become "udp4" or "udp6", IP networks become "ip4" or "ip6",
    // and other known networks are passed as-is.
    //
    // If ControlContext is not nil, Control is ignored.
    ControlContext func(ctx context.Context, network, address string, c syscall.RawConn) error // Go 1.20
    // contains filtered or unexported fields
}

Пример

Код:

var d net.Dialer
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()

conn, err := d.DialContext(ctx, "tcp", "localhost:12345")
if err != nil {
    log.Fatalf("Failed to dial: %v", err)
}
defer conn.Close()

if _, err := conn.Write([]byte("Hello, World!")); err != nil {
    log.Fatal(err)
}

Пример (Unix)

Код:

// DialUnix does not take a context.Context parameter. This example shows
// how to dial a Unix socket with a Context. Note that the Context only
// applies to the dial operation; it does not apply to the connection once
// it has been established.
var d net.Dialer
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()

d.LocalAddr = nil // if you have a local addr, add it here
raddr := net.UnixAddr{Name: "/path/to/unix.sock", Net: "unix"}
conn, err := d.DialContext(ctx, "unix", raddr.String())
if err != nil {
    log.Fatalf("Failed to dial: %v", err)
}
defer conn.Close()
if _, err := conn.Write([]byte("Hello, socket!")); err != nil {
    log.Fatal(err)
}

func (*Dialer) Dial 1.1

func (d *Dialer) Dial(network, address string) (Conn, error)

Dial устанавливает соединение с адресом в указанной сети.

Описание параметров сети и адреса см. в функции Dial.

Внутри Dial используется context.Background; чтобы указать контекст, используйте Dialer.DialContext.

func (*Dialer) DialContext 1.7

func (d *Dialer) DialContext(ctx context.Context, network, address string) (Conn, error)

DialContext устанавливает соединение с адресом в указанной сети, используя предоставленный контекст.

Предоставленный Context не должен быть nil. Если срок действия контекста истекает до завершения соединения, возвращается ошибка. После успешного установления соединения истечение срока действия контекста не повлияет на соединение.

При использовании TCP, если имя узла в параметре адреса разрешается в несколько сетевых адресов, любой тайм-аут дозвона (из d.Timeout или ctx) распределяется между последовательными попытками дозвона так, чтобы каждой отводилась соответствующая доля времени на установление соединения. Например, если у узла есть 4 IP-адреса, а тайм-аут составляет 1 минуту, на установление соединения с каждым отдельным адресом отводится 15 секунд, после чего выполняется попытка со следующим адресом.

Описание параметров сети и адреса см. в функции Dial.

func (*Dialer) DialIP 1.26

func (d *Dialer) DialIP(ctx context.Context, network string, laddr netip.Addr, raddr netip.Addr) (*IPConn, error)

DialIP действует как Dial для IP-сетей, используя предоставленный контекст.

Предоставленный Context не должен быть nil. Если срок действия контекста истекает до завершения соединения, возвращается ошибка. После успешного установления соединения истечение срока действия контекста не повлияет на соединение.

Имя сети должно обозначать IP-сеть; подробности см. в функции Dial.

func (*Dialer) DialTCP 1.26

func (d *Dialer) DialTCP(ctx context.Context, network string, laddr netip.AddrPort, raddr netip.AddrPort) (*TCPConn, error)

DialTCP действует как Dial для TCP-сетей, используя предоставленный контекст.

Предоставленный Context не должен быть nil. Если срок действия контекста истекает до завершения соединения, возвращается ошибка. После успешного установления соединения истечение срока действия контекста не повлияет на соединение.

Имя сети должно обозначать TCP-сеть; подробности см. в функции Dial.

func (*Dialer) DialUDP 1.26

func (d *Dialer) DialUDP(ctx context.Context, network string, laddr netip.AddrPort, raddr netip.AddrPort) (*UDPConn, error)

DialUDP действует как Dial для UDP-сетей, используя предоставленный контекст.

Предоставленный Context не должен быть nil. Если срок действия контекста истекает до завершения соединения, возвращается ошибка. После успешного установления соединения истечение срока действия контекста не повлияет на соединение.

Имя сети должно обозначать UDP-сеть; подробности см. в функции Dial.

func (*Dialer) DialUnix 1.26

func (d *Dialer) DialUnix(ctx context.Context, network string, laddr *UnixAddr, raddr *UnixAddr) (*UnixConn, error)

DialUnix действует как Dial для Unix-сетей, используя предоставленный контекст.

Предоставленный Context не должен быть nil. Если срок действия контекста истекает до завершения соединения, возвращается ошибка. После успешного установления соединения истечение срока действия контекста не повлияет на соединение.

Имя сети должно обозначать Unix-сеть; подробности см. в функции Dial.

func (*Dialer) MultipathTCP 1.21

func (d *Dialer) MultipathTCP() bool

MultipathTCP сообщает, будет ли использоваться MPTCP.

Этот метод не проверяет, поддерживается ли MPTCP операционной системой.

func (*Dialer) SetMultipathTCP 1.21

func (d *Dialer) SetMultipathTCP(use bool)

SetMultipathTCP указывает методам Dial использовать или не использовать MPTCP, если он поддерживается операционной системой. Этот метод переопределяет системное значение по умолчанию и настройку GODEBUG=multipathtcp=..., если она задана.

Если MPTCP недоступен на узле или не поддерживается сервером, методы Dial переключатся на TCP.

type Error

Error представляет сетевую ошибку.

type Error interface {
    error
    Timeout() bool // Is the error a timeout?

    // Deprecated: Temporary errors are not well-defined.
    // Most "temporary" errors are timeouts, and the few exceptions are surprising.
    // Do not use this method.
    Temporary() bool
}

type Flags

type Flags uint
const (
    FlagUp           Flags = 1 << iota // interface is administratively up
    FlagBroadcast                      // interface supports broadcast access capability
    FlagLoopback                       // interface is a loopback interface
    FlagPointToPoint                   // interface belongs to a point-to-point link
    FlagMulticast                      // interface supports multicast access capability
    FlagRunning                        // interface is in running state
)

func (Flags) String

func (f Flags) String() string

type HardwareAddr

HardwareAddr представляет физический аппаратный адрес.

type HardwareAddr []byte

func ParseMAC

func ParseMAC(s string) (hw HardwareAddr, err error)

ParseMAC разбирает s как MAC-48, EUI-48, EUI-64 в формате IEEE 802 или адрес канального уровня IP поверх InfiniBand длиной 20 октетов в одном из следующих форматов:

00:00:5e:00:53:01
02:00:5e:10:00:00:00:01
00:00:00:00:fe:80:00:00:00:00:00:00:02:00:5e:10:00:00:00:01
00-00-5e-00-53-01
02-00-5e-10-00-00-00-01
00-00-00-00-fe-80-00-00-00-00-00-00-02-00-5e-10-00-00-00-01
0000.5e00.5301
0200.5e10.0000.0001
0000.0000.fe80.0000.0000.0000.0200.5e10.0000.0001
00005e005301

func (HardwareAddr) String

func (a HardwareAddr) String() string

type IP

IP — это отдельный IP-адрес, срез байтов. Функции этого пакета принимают на вход срезы длиной 4 байта (IPv4) или 16 байт (IPv6).

Обратите внимание, что в этой документации обозначение IP-адреса как адреса IPv4 или IPv6 является семантическим свойством адреса, а не только длиной среза байтов: срез длиной 16 байт всё ещё может представлять адрес IPv4.

type IP []byte

func IPv4

func IPv4(a, b, c, d byte) IP

IPv4 возвращает IP-адрес (в 16-байтовом представлении) адреса IPv4 a.b.c.d.

Пример

Код:

fmt.Println(net.IPv4(8, 8, 8, 8))

Вывод:

8.8.8.8

func LookupIP

func LookupIP(host string) ([]IP, error)

LookupIP выполняет поиск host с помощью локального распознавателя имен. Функция возвращает срез адресов IPv4 и IPv6 этого узла.

func ParseIP

func ParseIP(s string) IP

ParseIP разбирает s как IP-адрес и возвращает результат. Строка s может быть записана в десятичном формате IPv4 с точками ("192.0.2.1"), в формате IPv6 ("2001:db8::68") или в формате IPv4, отображённом в IPv6 ("::ffff:192.0.2.1"). Если s не является допустимым текстовым представлением IP-адреса, ParseIP возвращает nil. Возвращаемый адрес всегда имеет длину 16 байт; адреса IPv4 возвращаются в формате IPv4, отображённом в IPv6.

Пример

Код:

fmt.Println(net.ParseIP("192.0.2.1"))
fmt.Println(net.ParseIP("2001:db8::68"))
fmt.Println(net.ParseIP("192.0.2"))

Вывод:

192.0.2.1
2001:db8::68
<nil>

func (IP) AppendText 1.24

func (ip IP) AppendText(b []byte) ([]byte, error)

AppendText реализует интерфейс encoding.TextAppender. Кодирование совпадает с возвращаемым IP.String, за исключением следующего: если len(ip) равен нулю, ничего не добавляется.

func (IP) DefaultMask

func (ip IP) DefaultMask() IPMask

DefaultMask возвращает маску IP по умолчанию для IP-адреса ip. Маски по умолчанию есть только у адресов IPv4; если ip не является допустимым адресом IPv4, DefaultMask возвращает nil.

Пример

Код:

ip := net.ParseIP("192.0.2.1")
fmt.Println(ip.DefaultMask())

Вывод:

ffffff00

func (IP) Equal

func (ip IP) Equal(x IP) bool

Equal сообщает, являются ли ip и x одним и тем же IP-адресом. Адрес IPv4 и тот же адрес в формате IPv6 считаются равными.

Пример

Код:

ipv4DNS := net.ParseIP("8.8.8.8")
ipv4Lo := net.ParseIP("127.0.0.1")
ipv6DNS := net.ParseIP("0:0:0:0:0:FFFF:0808:0808")

fmt.Println(ipv4DNS.Equal(ipv4DNS))
fmt.Println(ipv4DNS.Equal(ipv4Lo))
fmt.Println(ipv4DNS.Equal(ipv6DNS))

Вывод:

true
false
true

func (IP) IsGlobalUnicast

func (ip IP) IsGlobalUnicast() bool

IsGlobalUnicast сообщает, является ли ip глобальным одноадресным адресом.

Для определения глобальных одноадресных адресов используется идентификация типа адреса, определённая в RFC 1122, RFC 4632 и RFC 4291, за исключением направленных широковещательных IPv4-адресов. Метод возвращает true, даже если ip входит в диапазон частных IPv4-адресов или локальных одноадресных IPv6-адресов.

Пример

Код:

ipv6Global := net.ParseIP("2000::")
ipv6UniqLocal := net.ParseIP("2000::")
ipv6Multi := net.ParseIP("FF00::")

ipv4Private := net.ParseIP("10.255.0.0")
ipv4Public := net.ParseIP("8.8.8.8")
ipv4Broadcast := net.ParseIP("255.255.255.255")

fmt.Println(ipv6Global.IsGlobalUnicast())
fmt.Println(ipv6UniqLocal.IsGlobalUnicast())
fmt.Println(ipv6Multi.IsGlobalUnicast())

fmt.Println(ipv4Private.IsGlobalUnicast())
fmt.Println(ipv4Public.IsGlobalUnicast())
fmt.Println(ipv4Broadcast.IsGlobalUnicast())

Вывод:

true
true
false
true
true
false

func (IP) IsInterfaceLocalMulticast

func (ip IP) IsInterfaceLocalMulticast() bool

IsInterfaceLocalMulticast сообщает, является ли ip многоадресным адресом с областью действия интерфейса.

Пример

Код:

ipv6InterfaceLocalMulti := net.ParseIP("ff01::1")
ipv6Global := net.ParseIP("2000::")
ipv4 := net.ParseIP("255.0.0.0")

fmt.Println(ipv6InterfaceLocalMulti.IsInterfaceLocalMulticast())
fmt.Println(ipv6Global.IsInterfaceLocalMulticast())
fmt.Println(ipv4.IsInterfaceLocalMulticast())

Вывод:

true
false
false

func (IP) IsLinkLocalMulticast

func (ip IP) IsLinkLocalMulticast() bool

IsLinkLocalMulticast сообщает, является ли ip многоадресным адресом с областью действия канала.

Пример

Код:

ipv6LinkLocalMulti := net.ParseIP("ff02::2")
ipv6LinkLocalUni := net.ParseIP("fe80::")
ipv4LinkLocalMulti := net.ParseIP("224.0.0.0")
ipv4LinkLocalUni := net.ParseIP("169.254.0.0")

fmt.Println(ipv6LinkLocalMulti.IsLinkLocalMulticast())
fmt.Println(ipv6LinkLocalUni.IsLinkLocalMulticast())
fmt.Println(ipv4LinkLocalMulti.IsLinkLocalMulticast())
fmt.Println(ipv4LinkLocalUni.IsLinkLocalMulticast())

Вывод:

true
false
true
false

func (IP) IsLinkLocalUnicast

func (ip IP) IsLinkLocalUnicast() bool

IsLinkLocalUnicast сообщает, является ли ip одноадресным адресом с областью действия канала.

Пример

Код:

ipv6LinkLocalUni := net.ParseIP("fe80::")
ipv6Global := net.ParseIP("2000::")
ipv4LinkLocalUni := net.ParseIP("169.254.0.0")
ipv4LinkLocalMulti := net.ParseIP("224.0.0.0")

fmt.Println(ipv6LinkLocalUni.IsLinkLocalUnicast())
fmt.Println(ipv6Global.IsLinkLocalUnicast())
fmt.Println(ipv4LinkLocalUni.IsLinkLocalUnicast())
fmt.Println(ipv4LinkLocalMulti.IsLinkLocalUnicast())

Вывод:

true
false
true
false

func (IP) IsLoopback

func (ip IP) IsLoopback() bool

IsLoopback сообщает, является ли ip адресом обратной петли.

Пример

Код:

ipv6Lo := net.ParseIP("::1")
ipv6 := net.ParseIP("ff02::1")
ipv4Lo := net.ParseIP("127.0.0.0")
ipv4 := net.ParseIP("128.0.0.0")

fmt.Println(ipv6Lo.IsLoopback())
fmt.Println(ipv6.IsLoopback())
fmt.Println(ipv4Lo.IsLoopback())
fmt.Println(ipv4.IsLoopback())

Вывод:

true
false
true
false

func (IP) IsMulticast

func (ip IP) IsMulticast() bool

IsMulticast сообщает, является ли ip многоадресным адресом.

Пример

Код:

ipv6Multi := net.ParseIP("FF00::")
ipv6LinkLocalMulti := net.ParseIP("ff02::1")
ipv6Lo := net.ParseIP("::1")
ipv4Multi := net.ParseIP("239.0.0.0")
ipv4LinkLocalMulti := net.ParseIP("224.0.0.0")
ipv4Lo := net.ParseIP("127.0.0.0")

fmt.Println(ipv6Multi.IsMulticast())
fmt.Println(ipv6LinkLocalMulti.IsMulticast())
fmt.Println(ipv6Lo.IsMulticast())
fmt.Println(ipv4Multi.IsMulticast())
fmt.Println(ipv4LinkLocalMulti.IsMulticast())
fmt.Println(ipv4Lo.IsMulticast())

Вывод:

true
true
false
true
true
false

func (IP) IsPrivate 1.17

func (ip IP) IsPrivate() bool

IsPrivate сообщает, является ли ip частным адресом согласно RFC 1918 (для IPv4-адресов) и RFC 4193 (для IPv6-адресов). Иными словами, метод сообщает, входит ли ip в диапазон 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 или fc00::/7.

IsPrivate не характеризует адреса с точки зрения безопасности и не должен использоваться для управления доступом.

Пример

Код:

ipv6Private := net.ParseIP("fc00::")
ipv6Public := net.ParseIP("fe00::")
ipv4Private := net.ParseIP("10.255.0.0")
ipv4Public := net.ParseIP("11.0.0.0")

fmt.Println(ipv6Private.IsPrivate())
fmt.Println(ipv6Public.IsPrivate())
fmt.Println(ipv4Private.IsPrivate())
fmt.Println(ipv4Public.IsPrivate())

Вывод:

true
false
true
false

func (IP) IsUnspecified

func (ip IP) IsUnspecified() bool

IsUnspecified сообщает, является ли ip неуказанным адресом: IPv4-адресом "0.0.0.0" или IPv6-адресом "::".

Пример

Код:

ipv6Unspecified := net.ParseIP("::")
ipv6Specified := net.ParseIP("fe00::")
ipv4Unspecified := net.ParseIP("0.0.0.0")
ipv4Specified := net.ParseIP("8.8.8.8")

fmt.Println(ipv6Unspecified.IsUnspecified())
fmt.Println(ipv6Specified.IsUnspecified())
fmt.Println(ipv4Unspecified.IsUnspecified())
fmt.Println(ipv4Specified.IsUnspecified())

Вывод:

true
false
true
false

func (IP) MarshalText 1.2

func (ip IP) MarshalText() ([]byte, error)

MarshalText реализует интерфейс encoding.TextMarshaler. Формат кодирования совпадает с форматом, возвращаемым IP.String, за одним исключением: если len(ip) равен нулю, метод возвращает пустой срез.

func (IP) Mask

func (ip IP) Mask(mask IPMask) IP

Mask возвращает результат применения маски mask к IP-адресу ip.

Пример

Код:

ipv4Addr := net.ParseIP("192.0.2.1")
// This mask corresponds to a /24 subnet for IPv4.
ipv4Mask := net.CIDRMask(24, 32)
fmt.Println(ipv4Addr.Mask(ipv4Mask))

ipv6Addr := net.ParseIP("2001:db8:a0b:12f0::1")
// This mask corresponds to a /32 subnet for IPv6.
ipv6Mask := net.CIDRMask(32, 128)
fmt.Println(ipv6Addr.Mask(ipv6Mask))

Вывод:

192.0.2.0
2001:db8::

func (IP) String

func (ip IP) String() string

String возвращает строковое представление IP-адреса ip. Метод возвращает один из четырёх вариантов:

  • "<nil>", если длина ip равна 0
  • десятичная запись с точками ("192.0.2.1"), если ip — IPv4-адрес или IPv6-адрес, отображённый на IPv4
  • IPv6-адрес в соответствии с RFC 5952 ("2001:db8::1"), если ip является допустимым IPv6-адресом
  • шестнадцатеричное представление ip без знаков пунктуации, если не подходит ни один из других вариантов

Пример

Код:

ipv6 := net.IP{0xfc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
ipv4 := net.IPv4(10, 255, 0, 0)

fmt.Println(ipv6.String())
fmt.Println(ipv4.String())

Вывод:

fc00::
10.255.0.0

func (IP) To16

func (ip IP) To16() IP

To16 преобразует IP-адрес ip в 16-байтовое представление. Если ip не является IP-адресом (имеет неверную длину), To16 возвращает nil.

Пример

Код:

ipv6 := net.IP{0xfc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
ipv4 := net.IPv4(10, 255, 0, 0)

fmt.Println(ipv6.To16())
fmt.Println(ipv4.To16())

Вывод:

fc00::
10.255.0.0

func (IP) To4

func (ip IP) To4() IP

To4 преобразует IPv4-адрес ip в 4-байтовое представление. Если ip не является IPv4-адресом, To4 возвращает nil.

Пример

Код:

ipv6 := net.IP{0xfc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
ipv4 := net.IPv4(10, 255, 0, 0)

fmt.Println(ipv6.To4())
fmt.Println(ipv4.To4())

Вывод:

<nil>
10.255.0.0

func (*IP) UnmarshalText 1.2

func (ip *IP) UnmarshalText(text []byte) error

UnmarshalText реализует интерфейс encoding.TextUnmarshaler. IP-адрес должен быть представлен в формате, принимаемом функцией ParseIP.

type IPAddr

IPAddr представляет адрес конечной точки IP.

type IPAddr struct {
    IP   IP
    Zone string // IPv6 scoped addressing zone; added in Go 1.1
}

func ResolveIPAddr

func ResolveIPAddr(network, address string) (*IPAddr, error)

ResolveIPAddr возвращает адрес конечной точки IP.

Сеть должна быть именем IP-сети.

Если хост в параметре address не является IP-адресом в буквальной записи, ResolveIPAddr разрешает адрес в адрес конечной точки IP. В противном случае метод разбирает адрес как IP-адрес в буквальной записи. В параметре address можно указать имя хоста, но это не рекомендуется, поскольку будет возвращен не более чем один IP-адрес этого имени хоста.

Описание параметров network и address см. в функции Dial.

func (*IPAddr) Network

func (a *IPAddr) Network() string

Network возвращает имя сети адреса — "ip".

func (*IPAddr) String

func (a *IPAddr) String() string

type IPConn

IPConn реализует интерфейсы Conn и PacketConn для сетевых подключений IP.

type IPConn struct {
    // contains filtered or unexported fields
}

func DialIP

func DialIP(network string, laddr, raddr *IPAddr) (*IPConn, error)

DialIP работает аналогично Dial для IP-сетей.

Сеть должна быть именем IP-сети; подробности см. в описании функции Dial.

Если laddr равен nil, локальный адрес выбирается автоматически. Если поле IP в raddr равно nil или содержит неуказанный IP-адрес, предполагается локальная система.

func ListenIP

func ListenIP(network string, laddr *IPAddr) (*IPConn, error)

ListenIP работает аналогично ListenPacket для IP-сетей.

Сеть должна быть именем IP-сети; подробности см. в описании функции Dial.

Если поле IP в laddr равно nil или содержит неуказанный IP-адрес, ListenIP принимает соединения на всех доступных IP-адресах локальной системы, кроме многоадресных IP-адресов.

func (*IPConn) Close

func (c *IPConn) Close() error

Close закрывает соединение.

func (*IPConn) File

func (c *IPConn) File() (f *os.File, err error)

File возвращает копию базового os.File. Вызывающий код должен закрыть f после использования. Закрытие c не влияет на f, а закрытие f не влияет на c.

Дескриптор файла возвращенного os.File отличается от дескриптора соединения. Изменение свойств исходного файла с помощью этого дубликата может дать ожидаемый результат, а может и не дать.

В Windows дескриптор файла возвращённого os.File нельзя использовать в других процессах.

func (*IPConn) LocalAddr

func (c *IPConn) LocalAddr() Addr

LocalAddr возвращает локальный сетевой адрес. Возвращаемый Addr является общим для всех вызовов LocalAddr, поэтому не изменяйте его.

func (*IPConn) Read

func (c *IPConn) Read(b []byte) (int, error)

Read реализует метод Conn Read.

func (*IPConn) ReadFrom

func (c *IPConn) ReadFrom(b []byte) (int, Addr, error)

ReadFrom реализует метод PacketConn ReadFrom.

func (*IPConn) ReadFromIP

func (c *IPConn) ReadFromIP(b []byte) (int, *IPAddr, error)

ReadFromIP действует как ReadFrom, но возвращает IPAddr.

func (*IPConn) ReadMsgIP 1.1

func (c *IPConn) ReadMsgIP(b, oob []byte) (n, oobn, flags int, addr *IPAddr, err error)

ReadMsgIP читает сообщение из c, копируя полезную нагрузку в b, а связанные внеполосные данные — в oob. Метод возвращает количество байтов, скопированных в b, количество байтов, скопированных в oob, флаги, установленные для сообщения, и адрес источника сообщения.

Пакеты golang.org/x/net/ipv4 и golang.org/x/net/ipv6 можно использовать для управления параметрами сокета на уровне IP в oob.

func (*IPConn) RemoteAddr

func (c *IPConn) RemoteAddr() Addr

RemoteAddr возвращает удалённый сетевой адрес. Возвращаемый Addr является общим для всех вызовов RemoteAddr, поэтому не изменяйте его.

func (*IPConn) SetDeadline

func (c *IPConn) SetDeadline(t time.Time) error

SetDeadline реализует метод Conn SetDeadline.

func (*IPConn) SetReadBuffer

func (c *IPConn) SetReadBuffer(bytes int) error

SetReadBuffer задаёт размер буфера приёма операционной системы, связанного с соединением.

func (*IPConn) SetReadDeadline

func (c *IPConn) SetReadDeadline(t time.Time) error

SetReadDeadline реализует метод Conn SetReadDeadline.

func (*IPConn) SetWriteBuffer

func (c *IPConn) SetWriteBuffer(bytes int) error

SetWriteBuffer задаёт размер буфера передачи операционной системы, связанного с соединением.

func (*IPConn) SetWriteDeadline

func (c *IPConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline реализует метод Conn SetWriteDeadline.

func (*IPConn) SyscallConn 1.9

func (c *IPConn) SyscallConn() (syscall.RawConn, error)

SyscallConn возвращает необработанное сетевое соединение. Этот метод реализует интерфейс syscall.Conn.

func (*IPConn) Write

func (c *IPConn) Write(b []byte) (int, error)

Write реализует метод Conn Write.

func (*IPConn) WriteMsgIP 1.1

func (c *IPConn) WriteMsgIP(b, oob []byte, addr *IPAddr) (n, oobn int, err error)

WriteMsgIP записывает сообщение по адресу addr через c, копируя полезную нагрузку из b, а связанные внеполосные данные — из oob. Метод возвращает количество записанных байтов полезной нагрузки и внеполосных данных.

Пакеты golang.org/x/net/ipv4 и golang.org/x/net/ipv6 можно использовать для управления параметрами сокета на уровне IP в oob.

func (*IPConn) WriteTo

func (c *IPConn) WriteTo(b []byte, addr Addr) (int, error)

WriteTo реализует метод PacketConn WriteTo.

func (*IPConn) WriteToIP

func (c *IPConn) WriteToIP(b []byte, addr *IPAddr) (int, error)

WriteToIP действует как IPConn.WriteTo, но принимает IPAddr.

type IPMask

IPMask — это битовая маска, которую можно использовать для обработки IP-адресов при адресации и маршрутизации IP.

Подробности см. в описании типа IPNet и функции ParseCIDR.

type IPMask []byte

func CIDRMask

func CIDRMask(ones, bits int) IPMask

CIDRMask возвращает IPMask, состоящую из «единичных» битов 1, за которыми следуют нули до общей длины в 'bits' бит. Для маски такого вида CIDRMask является обратной функцией к IPMask.Size.

Пример

Код:

// This mask corresponds to a /31 subnet for IPv4.
fmt.Println(net.CIDRMask(31, 32))

// This mask corresponds to a /64 subnet for IPv6.
fmt.Println(net.CIDRMask(64, 128))

Вывод:

fffffffe
ffffffffffffffff0000000000000000

func IPv4Mask

func IPv4Mask(a, b, c, d byte) IPMask

IPv4Mask возвращает IP-маску (в 4-байтовом формате) для IPv4-маски a.b.c.d.

Пример

Код:

fmt.Println(net.IPv4Mask(255, 255, 255, 0))

Вывод:

ffffff00

func (IPMask) Size

func (m IPMask) Size() (ones, bits int)

Size возвращает количество ведущих единиц и общее количество битов в маске. Если маска не имеет канонической формы — единицы, за которыми следуют нули, — Size возвращает 0, 0.

func (IPMask) String

func (m IPMask) String() string

String возвращает шестнадцатеричное представление m без знаков препинания.

type IPNet

IPNet представляет IP-сеть.

type IPNet struct {
    IP   IP     // network number
    Mask IPMask // network mask
}

func (*IPNet) Contains

func (n *IPNet) Contains(ip IP) bool

Contains сообщает, входит ли ip в сеть.

func (*IPNet) Network

func (n *IPNet) Network() string

Network возвращает имя сети адреса — "ip+net".

func (*IPNet) String

func (n *IPNet) String() string

String возвращает представление n в нотации CIDR, например "192.0.2.0/24" или "2001:db8::/48", как определено в RFC 4632 и RFC 4291. Если маска не имеет канонической формы, возвращается строка, состоящая из IP-адреса, за которым следует косая черта и маска в шестнадцатеричном формате без знаков препинания, например "198.51.100.0/c000ff00".

type Interface

Interface представляет соответствие между именем сетевого интерфейса и его индексом. Он также содержит сведения о сетевых интерфейсах.

type Interface struct {
    Index        int          // positive integer that starts at one, zero is never used
    MTU          int          // maximum transmission unit
    Name         string       // e.g., "en0", "lo0", "eth0.100"; may be the empty string
    HardwareAddr HardwareAddr // IEEE MAC-48, EUI-48 and EUI-64 form
    Flags        Flags        // e.g., FlagUp, FlagLoopback, FlagMulticast
}

func InterfaceByIndex

func InterfaceByIndex(index int) (*Interface, error)

InterfaceByIndex возвращает интерфейс, указанный индексом.

В Solaris функция возвращает один из логических сетевых интерфейсов, совместно использующих логический канал передачи данных; для большей точности используйте InterfaceByName.

func InterfaceByName

func InterfaceByName(name string) (*Interface, error)

InterfaceByName возвращает интерфейс, указанный именем.

func Interfaces

func Interfaces() ([]Interface, error)

Interfaces возвращает список сетевых интерфейсов системы.

func (*Interface) Addrs

func (ifi *Interface) Addrs() ([]Addr, error)

Addrs возвращает список одноадресных адресов указанного интерфейса.

func (*Interface) MulticastAddrs

func (ifi *Interface) MulticastAddrs() ([]Addr, error)

MulticastAddrs возвращает список адресов групп многоадресной рассылки, к которым присоединился указанный интерфейс.

type InvalidAddrError

type InvalidAddrError string

func (InvalidAddrError) Error

func (e InvalidAddrError) Error() string

func (InvalidAddrError) Temporary

func (e InvalidAddrError) Temporary() bool

func (InvalidAddrError) Timeout

func (e InvalidAddrError) Timeout() bool

type KeepAliveConfig 1.23

KeepAliveConfig содержит параметры TCP keep-alive.

Если поля Idle, Interval или Count равны нулю, выбирается значение по умолчанию. Если поле отрицательное, соответствующий параметр уровня сокета останется без изменений.

Обратите внимание, что до Windows 10 версии 1709 не поддерживалась ни отдельная настройка Idle и Interval, ни изменение Count (обычно равного 10). Поэтому в старых версиях Windows рекомендуется задавать для Idle и Interval неотрицательные значения, а для Count — -1, если вы хотите настроить параметры TCP keep-alive. В отличие от этого, если неотрицательное значение задано только для одного из полей Idle и Interval, для другого будет установлено системное значение по умолчанию. Наконец, задайте для обоих полей Idle и Interval отрицательные значения, если хотите оставить их без изменений.

Обратите внимание, что Solaris и его производные системы не поддерживают установку неотрицательного значения для Interval и отрицательного значения для Count, а также наоборот.

type KeepAliveConfig struct {
    // If Enable is true, keep-alive probes are enabled.
    Enable bool

    // Idle is the time that the connection must be idle before
    // the first keep-alive probe is sent.
    // If zero, a default value of 15 seconds is used.
    Idle time.Duration

    // Interval is the time between keep-alive probes.
    // If zero, a default value of 15 seconds is used.
    Interval time.Duration

    // Count is the maximum number of keep-alive probes that
    // can go unanswered before dropping a connection.
    // If zero, a default value of 9 is used.
    Count int
}

type ListenConfig 1.11

ListenConfig содержит параметры для прослушивания адреса.

type ListenConfig struct {
    // If Control is not nil, it is called after creating the network
    // connection but before binding it to the operating system.
    //
    // Network and address parameters passed to Control function are not
    // necessarily the ones passed to Listen. Calling Listen with TCP networks
    // will cause the Control function to be called with "tcp4" or "tcp6",
    // UDP networks become "udp4" or "udp6", IP networks become "ip4" or "ip6",
    // and other known networks are passed as-is.
    Control func(network, address string, c syscall.RawConn) error

    // KeepAlive specifies the keep-alive period for network
    // connections accepted by this listener.
    //
    // KeepAlive is ignored if KeepAliveConfig.Enable is true.
    //
    // If zero, keep-alive are enabled if supported by the protocol
    // and operating system. Network protocols or operating systems
    // that do not support keep-alive ignore this field.
    // If negative, keep-alive are disabled.
    KeepAlive time.Duration // Go 1.13

    // KeepAliveConfig specifies the keep-alive probe configuration
    // for an active network connection, when supported by the
    // protocol and operating system.
    //
    // If KeepAliveConfig.Enable is true, keep-alive probes are enabled.
    // If KeepAliveConfig.Enable is false and KeepAlive is negative,
    // keep-alive probes are disabled.
    KeepAliveConfig KeepAliveConfig // Go 1.23
    // contains filtered or unexported fields
}

func (*ListenConfig) Listen 1.11

func (lc *ListenConfig) Listen(ctx context.Context, network, address string) (Listener, error)

Listen начинает прослушивание локального сетевого адреса.

Описание параметров network и address см. в функции Listen.

Аргумент ctx используется при разрешении адреса, на котором нужно прослушивать; он не влияет на возвращаемый Listener.

func (*ListenConfig) ListenPacket 1.11

func (lc *ListenConfig) ListenPacket(ctx context.Context, network, address string) (PacketConn, error)

ListenPacket начинает прослушивание локального сетевого адреса.

Описание параметров network и address см. в функции ListenPacket.

Аргумент ctx используется при разрешении адреса, на котором нужно прослушивать; он не влияет на возвращаемый PacketConn.

func (*ListenConfig) MultipathTCP 1.21

func (lc *ListenConfig) MultipathTCP() bool

MultipathTCP сообщает, будет ли использоваться MPTCP.

Этот метод не проверяет, поддерживается ли MPTCP операционной системой.

func (*ListenConfig) SetMultipathTCP 1.21

func (lc *ListenConfig) SetMultipathTCP(use bool)

SetMultipathTCP указывает методу Listen использовать или не использовать MPTCP, если оно поддерживается операционной системой. Этот метод переопределяет системные настройки по умолчанию и параметр GODEBUG=multipathtcp=..., если он задан.

Если MPTCP недоступен на хосте или не поддерживается клиентом, метод Listen переключится на TCP.

type Listener

Listener — это универсальный сетевой слушатель для протоколов, ориентированных на потоки.

Несколько горутин могут одновременно вызывать методы Listener.

type Listener interface {
    // Accept waits for and returns the next connection to the listener.
    Accept() (Conn, error)

    // Close closes the listener.
    // Any blocked Accept operations will be unblocked and return errors.
    Close() error

    // Addr returns the listener's network address.
    Addr() Addr
}

Пример

Код:

// Listen on TCP port 2000 on all available unicast and
// anycast IP addresses of the local system.
l, err := net.Listen("tcp", ":2000")
if err != nil {
    log.Fatal(err)
}
defer l.Close()
for {
    // Wait for a connection.
    conn, err := l.Accept()
    if err != nil {
        log.Fatal(err)
    }
    // Handle the connection in a new goroutine.
    // The loop then returns to accepting, so that
    // multiple connections may be served concurrently.
    go func(c net.Conn) {
        // Echo all incoming data.
        io.Copy(c, c)
        // Shut down the connection.
        c.Close()
    }(conn)
}

func FileListener

func FileListener(f *os.File) (ln Listener, err error)

FileListener возвращает копию сетевого слушателя, соответствующего открытому файлу f. Вызывающий код должен закрыть ln после завершения работы. Закрытие ln не влияет на f, а закрытие f не влияет на ln.

func Listen

func Listen(network, address string) (Listener, error)

Listen начинает прослушивание локального сетевого адреса.

Значением network должно быть "tcp", "tcp4", "tcp6", "unix" или "unixpacket".

Для сетей TCP, если хост в параметре address пуст или представляет собой неопределённый IP-адрес, Listen прослушивает все доступные одноадресные и любые многоадресные IP-адреса локальной системы. Чтобы использовать только IPv4, укажите сеть "tcp4". В адресе можно использовать имя хоста, но это не рекомендуется, поскольку слушатель будет создан не более чем для одного IP-адреса хоста. Если порт в параметре address пуст или равен "0", как в "127.0.0.1:" или "[::1]:0", номер порта выбирается автоматически. Метод Addr интерфейса Listener позволяет узнать выбранный порт.

Описание параметров network и address см. в функции Dial.

Внутри Listen использует context.Background; чтобы указать контекст, используйте ListenConfig.Listen.

type MX

MX представляет одну запись DNS MX.

type MX struct {
    Host string
    Pref uint16
}

func LookupMX

func LookupMX(name string) ([]*MX, error)

LookupMX возвращает записи DNS MX для указанного доменного имени, отсортированные по предпочтительности.

Возвращаемые имена почтовых серверов проверяются на соответствие правильному представлению доменных имён или числовых IP-адресов. Если ответ содержит некорректные имена, соответствующие записи отфильтровываются, а вместе с оставшимися результатами, если они есть, возвращается ошибка.

Внутри LookupMX использует context.Background; чтобы указать контекст, используйте Resolver.LookupMX.

type NS 1.1

NS представляет одну запись DNS NS.

type NS struct {
    Host string
}

func LookupNS 1.1

func LookupNS(name string) ([]*NS, error)

LookupNS возвращает записи DNS NS для указанного доменного имени.

Возвращаемые имена серверов имён проверяются на соответствие правильному представлению доменных имён. Если ответ содержит некорректные имена, соответствующие записи отфильтровываются, а вместе с оставшимися результатами, если они есть, возвращается ошибка.

Внутри LookupNS использует context.Background; чтобы указать контекст, используйте Resolver.LookupNS.

type OpError

OpError — это тип ошибки, обычно возвращаемый функциями пакета net. Он описывает операцию, тип сети и адрес, связанные с ошибкой.

type OpError struct {
    // Op is the operation which caused the error, such as
    // "read" or "write".
    Op string

    // Net is the network type on which this error occurred,
    // such as "tcp" or "udp6".
    Net string

    // For operations involving a remote network connection, like
    // Dial, Read, or Write, Source is the corresponding local
    // network address.
    Source Addr // Go 1.5

    // Addr is the network address for which this error occurred.
    // For local operations, like Listen or SetDeadline, Addr is
    // the address of the local endpoint being manipulated.
    // For operations involving a remote network connection, like
    // Dial, Read, or Write, Addr is the remote address of that
    // connection.
    Addr Addr

    // Err is the error that occurred during the operation.
    // The Error method panics if the error is nil.
    Err error
}

func (*OpError) Error

func (e *OpError) Error() string

func (*OpError) Temporary

func (e *OpError) Temporary() bool

func (*OpError) Timeout

func (e *OpError) Timeout() bool

func (*OpError) Unwrap 1.13

func (e *OpError) Unwrap() error

type PacketConn

PacketConn — это универсальное сетевое соединение, ориентированное на пакеты.

Несколько горутин могут одновременно вызывать методы PacketConn.

type PacketConn interface {
    // ReadFrom reads a packet from the connection,
    // copying the payload into p. It returns the number of
    // bytes copied into p and the return address that
    // was on the packet.
    // It returns the number of bytes read (0 <= n <= len(p))
    // and any error encountered. Callers should always process
    // the n > 0 bytes returned before considering the error err.
    // ReadFrom can be made to time out and return an error after a
    // fixed time limit; see SetDeadline and SetReadDeadline.
    ReadFrom(p []byte) (n int, addr Addr, err error)

    // WriteTo writes a packet with payload p to addr.
    // WriteTo can be made to time out and return an Error after a
    // fixed time limit; see SetDeadline and SetWriteDeadline.
    // On packet-oriented connections, write timeouts are rare.
    WriteTo(p []byte, addr Addr) (n int, err error)

    // Close closes the connection.
    // Any blocked ReadFrom or WriteTo operations will be unblocked and return errors.
    Close() error

    // LocalAddr returns the local network address, if known.
    LocalAddr() Addr

    // SetDeadline sets the read and write deadlines associated
    // with the connection. It is equivalent to calling both
    // SetReadDeadline and SetWriteDeadline.
    //
    // A deadline is an absolute time after which I/O operations
    // fail instead of blocking. The deadline applies to all future
    // and pending I/O, not just the immediately following call to
    // Read or Write. After a deadline has been exceeded, the
    // connection can be refreshed by setting a deadline in the future.
    //
    // If the deadline is exceeded a call to Read or Write or to other
    // I/O methods will return an error that wraps os.ErrDeadlineExceeded.
    // This can be tested using errors.Is(err, os.ErrDeadlineExceeded).
    // The error's Timeout method will return true, but note that there
    // are other possible errors for which the Timeout method will
    // return true even if the deadline has not been exceeded.
    //
    // An idle timeout can be implemented by repeatedly extending
    // the deadline after successful ReadFrom or WriteTo calls.
    //
    // A zero value for t means I/O operations will not time out.
    SetDeadline(t time.Time) error

    // SetReadDeadline sets the deadline for future ReadFrom calls
    // and any currently-blocked ReadFrom call.
    // A zero value for t means ReadFrom will not time out.
    SetReadDeadline(t time.Time) error

    // SetWriteDeadline sets the deadline for future WriteTo calls
    // and any currently-blocked WriteTo call.
    // Even if write times out, it may return n > 0, indicating that
    // some of the data was successfully written.
    // A zero value for t means WriteTo will not time out.
    SetWriteDeadline(t time.Time) error
}

func FilePacketConn

func FilePacketConn(f *os.File) (c PacketConn, err error)

FilePacketConn возвращает копию пакетного сетевого соединения, соответствующего открытому файлу f. Вызывающий код должен закрыть f после завершения работы. Закрытие c не влияет на f, а закрытие f не влияет на c.

func ListenPacket

func ListenPacket(network, address string) (PacketConn, error)

ListenPacket начинает прослушивание локального сетевого адреса.

Значением network должно быть "udp", "udp4", "udp6", "unixgram" или IP-транспорт. Значения IP-транспорта — это "ip", "ip4" или "ip6", за которыми следуют двоеточие и буквальный номер протокола либо его имя, например "ip:1" или "ip:icmp".

Для сетей UDP и IP, если узел в параметре адреса пуст или представляет собой буквальный неопределённый IP-адрес, ListenPacket прослушивает все доступные IP-адреса локальной системы, кроме многоадресных IP-адресов. Чтобы использовать только IPv4, укажите сеть "udp4" или "ip4:proto". В адресе можно использовать имя узла, но это не рекомендуется, поскольку в таком случае прослушивание будет создано не более чем для одного IP-адреса узла. Если порт в параметре адреса пуст или равен "0", как в "127.0.0.1:" или "[::1]:0", номер порта выбирается автоматически. Чтобы узнать выбранный порт, можно использовать метод LocalAddr у PacketConn.

Описание параметров сети и адреса см. в документации функции Dial.

Внутри ListenPacket использует context.Background; чтобы указать контекст, используйте ListenConfig.ListenPacket.

type ParseError

ParseError — это тип ошибки, возвращаемой анализаторами буквальных сетевых адресов.

type ParseError struct {
    // Type is the type of string that was expected, such as
    // "IP address", "CIDR address".
    Type string

    // Text is the malformed text string.
    Text string
}

func (*ParseError) Error

func (e *ParseError) Error() string

func (*ParseError) Temporary 1.17

func (e *ParseError) Temporary() bool

func (*ParseError) Timeout 1.17

func (e *ParseError) Timeout() bool

type Resolver 1.8

Resolver выполняет поиск имён и номеров.

nil-указатель *Resolver эквивалентен нулевому значению Resolver.

type Resolver struct {
    // PreferGo controls whether Go's built-in DNS resolver is preferred
    // on platforms where it's available. It is equivalent to setting
    // GODEBUG=netdns=go, but scoped to just this resolver.
    PreferGo bool

    // StrictErrors controls the behavior of temporary errors
    // (including timeout, socket errors, and SERVFAIL) when using
    // Go's built-in resolver. For a query composed of multiple
    // sub-queries (such as an A+AAAA address lookup, or walking the
    // DNS search list), this option causes such errors to abort the
    // whole query instead of returning a partial result. This is
    // not enabled by default because it may affect compatibility
    // with resolvers that process AAAA queries incorrectly.
    StrictErrors bool // Go 1.9

    // Dial optionally specifies an alternate dialer for use by
    // Go's built-in DNS resolver to make TCP and UDP connections
    // to DNS services. The host in the address parameter will
    // always be a literal IP address and not a host name, and the
    // port in the address parameter will be a literal port number
    // and not a service name.
    // If the Conn returned is also a PacketConn, sent and received DNS
    // messages must adhere to RFC 1035 section 4.2.1, "UDP usage".
    // Otherwise, DNS messages transmitted over Conn must adhere
    // to RFC 7766 section 5, "Transport Protocol Selection".
    // If nil, the default dialer is used.
    Dial func(ctx context.Context, network, address string) (Conn, error) // Go 1.9
    // contains filtered or unexported fields
}

func (*Resolver) LookupAddr 1.8

func (r *Resolver) LookupAddr(ctx context.Context, addr string) ([]string, error)

LookupAddr выполняет обратный поиск для указанного адреса и возвращает список имён, сопоставленных с этим адресом.

Возвращённые имена проверяются на соответствие правильному формату доменных имён в формате представления. Если ответ содержит некорректные имена, соответствующие записи отфильтровываются, а вместе с оставшимися результатами, если они есть, возвращается ошибка.

func (*Resolver) LookupCNAME 1.8

func (r *Resolver) LookupCNAME(ctx context.Context, host string) (string, error)

LookupCNAME возвращает каноническое имя указанного узла. Если вызывающей стороне не нужно каноническое имя, можно напрямую вызвать LookupHost или LookupIP; обе функции разрешают каноническое имя в процессе поиска.

Каноническое имя — это конечное имя после перехода по нулю или нескольким записям CNAME. LookupCNAME не возвращает ошибку, если узел не содержит DNS-записей "CNAME", при условии что для узла разрешаются записи адресов.

Возвращённое каноническое имя проверяется на соответствие правильному формату доменного имени в формате представления.

func (*Resolver) LookupHost 1.8

func (r *Resolver) LookupHost(ctx context.Context, host string) (addrs []string, err error)

LookupHost ищет указанный узел с помощью локального резолвера. Функция возвращает срез адресов этого узла.

func (*Resolver) LookupIP 1.15

func (r *Resolver) LookupIP(ctx context.Context, network, host string) ([]IP, error)

LookupIP ищет IP-адреса узла для указанной сети с помощью локального резолвера. Функция возвращает срез IP-адресов этого узла указанного типом сети. Значение network должно быть одним из следующих: "ip", "ip4" или "ip6".

func (*Resolver) LookupIPAddr 1.8

func (r *Resolver) LookupIPAddr(ctx context.Context, host string) ([]IPAddr, error)

LookupIPAddr ищет узел с помощью локального резолвера. Функция возвращает срез адресов IPv4 и IPv6 этого узла.

func (*Resolver) LookupMX 1.8

func (r *Resolver) LookupMX(ctx context.Context, name string) ([]*MX, error)

LookupMX возвращает DNS-записи MX для указанного доменного имени, отсортированные по предпочтительности.

Возвращённые имена почтовых серверов проверяются на соответствие правильному формату доменных имён в формате представления или числовым IP-адресам. Если ответ содержит некорректные имена, соответствующие записи отфильтровываются, а вместе с оставшимися результатами, если они есть, возвращается ошибка.

func (*Resolver) LookupNS 1.8

func (r *Resolver) LookupNS(ctx context.Context, name string) ([]*NS, error)

LookupNS возвращает DNS-записи NS для указанного доменного имени.

Возвращённые имена серверов имён проверяются на соответствие правильному формату доменных имён в формате представления. Если ответ содержит некорректные имена, соответствующие записи отфильтровываются, а вместе с оставшимися результатами, если они есть, возвращается ошибка.

func (*Resolver) LookupNetIP 1.18

func (r *Resolver) LookupNetIP(ctx context.Context, network, host string) ([]netip.Addr, error)

LookupNetIP ищет узел с помощью локального резолвера. Функция возвращает срез IP-адресов этого узла указанного типом сети. Значение network должно быть одним из следующих: "ip", "ip4" или "ip6".

func (*Resolver) LookupPort 1.8

func (r *Resolver) LookupPort(ctx context.Context, network, service string) (port int, err error)

LookupPort ищет порт для указанной сети и службы.

Значение network должно быть одним из следующих: "tcp", "tcp4", "tcp6", "udp", "udp4", "udp6" или "ip".

func (*Resolver) LookupSRV 1.8

func (r *Resolver) LookupSRV(ctx context.Context, service, proto, name string) (string, []*SRV, error)

LookupSRV пытается выполнить запрос SRV для указанной службы, протокола и доменного имени. Значение proto — "tcp" или "udp". Возвращённые записи сортируются по приоритету, а внутри одного приоритета упорядочиваются случайным образом с учётом веса.

LookupSRV формирует DNS-имя для поиска в соответствии с RFC 2782. То есть выполняет поиск имени _service._proto.name. Для поддержки служб, публикующих записи SRV под нестандартными именами, если service и proto — пустые строки, LookupSRV выполняет поиск непосредственно по name.

Возвращённое cname — это имя владельца из первой записи ответа SRV. Обычно это сформированное DNS-имя (_service._proto.name), но оно может отличаться, если записи CNAME перенаправляют запрос на другое имя.

Возвращённые имена служб проверяются на соответствие правильному формату доменных имён в формате представления. Если ответ содержит некорректные имена, соответствующие записи отфильтровываются, а вместе с оставшимися результатами, если они есть, возвращается ошибка.

func (*Resolver) LookupTXT 1.8

func (r *Resolver) LookupTXT(ctx context.Context, name string) ([]string, error)

LookupTXT возвращает DNS-записи TXT для указанного доменного имени.

Если DNS-запись TXT содержит несколько строк, они объединяются в одну строку.

type SRV

SRV представляет одну DNS-запись SRV.

type SRV struct {
    Target   string
    Port     uint16
    Priority uint16
    Weight   uint16
}

func LookupSRV

func LookupSRV(service, proto, name string) (cname string, addrs []*SRV, err error)

LookupSRV пытается выполнить запрос SRV для указанной службы, протокола и доменного имени. Значение proto — "tcp" или "udp". Возвращённые записи сортируются по приоритету, а внутри одного приоритета упорядочиваются случайным образом с учётом веса.

LookupSRV формирует DNS-имя для поиска в соответствии с RFC 2782. То есть выполняет поиск имени _service._proto.name. Для поддержки служб, публикующих записи SRV под нестандартными именами, если service и proto — пустые строки, LookupSRV выполняет поиск непосредственно по name.

Возвращённое cname — это имя владельца из первой записи ответа SRV. Обычно это сформированное DNS-имя (_service._proto.name), но оно может отличаться, если записи CNAME перенаправляют запрос на другое имя.

Возвращённые имена служб проверяются на соответствие правильному формату доменных имён в формате представления. Если ответ содержит некорректные имена, соответствующие записи отфильтровываются, а вместе с оставшимися результатами, если они есть, возвращается ошибка.

type TCPAddr

TCPAddr представляет адрес конечной точки TCP.

type TCPAddr struct {
    IP   IP
    Port int
    Zone string // IPv6 scoped addressing zone; added in Go 1.1
}

func ResolveTCPAddr

func ResolveTCPAddr(network, address string) (*TCPAddr, error)

ResolveTCPAddr возвращает адрес конечной точки TCP.

В качестве имени сети должно быть указано имя сети TCP.

Если узел в параметре адреса не является IP-адресом в буквальной записи или порт не является номером порта в буквальной записи, ResolveTCPAddr преобразует адрес в адрес конечной точки TCP. В противном случае функция разбирает адрес как пару из IP-адреса и номера порта в буквальной записи. В параметре адреса можно указать имя узла, но это не рекомендуется, поскольку будет возвращен не более чем один IP-адрес этого узла.

Описание параметров сети и адреса см. в функции Dial.

func TCPAddrFromAddrPort 1.18

func TCPAddrFromAddrPort(addr netip.AddrPort) *TCPAddr

TCPAddrFromAddrPort возвращает addr как TCPAddr. Если addr.IsValid() возвращает false, то возвращенный TCPAddr будет содержать поле IP со значением nil, указывая на неопределенный адрес, не привязанный к семейству адресов.

func (*TCPAddr) AddrPort 1.18

func (a *TCPAddr) AddrPort() netip.AddrPort

AddrPort возвращает TCPAddr a в виде netip.AddrPort.

Если значение a.Port не помещается в uint16, оно молча усекается.

Если a равно nil, возвращается нулевое значение.

func (*TCPAddr) Network

func (a *TCPAddr) Network() string

Network возвращает имя сети адреса — "tcp".

func (*TCPAddr) String

func (a *TCPAddr) String() string

type TCPConn

TCPConn — это реализация интерфейса Conn для сетевых TCP-соединений.

type TCPConn struct {
    // contains filtered or unexported fields
}

func DialTCP

func DialTCP(network string, laddr, raddr *TCPAddr) (*TCPConn, error)

DialTCP работает так же, как Dial, для сетей TCP.

В качестве имени сети должно быть указано имя сети TCP; подробности см. в описании функции Dial.

Если laddr равно nil, локальный адрес выбирается автоматически. Если поле IP у raddr равно nil или содержит неопределенный IP-адрес, используется локальная система.

func (*TCPConn) Close

func (c *TCPConn) Close() error

Close закрывает соединение.

func (*TCPConn) CloseRead

func (c *TCPConn) CloseRead() error

CloseRead отключает чтение в TCP-соединении. Большинству вызывающих кода достаточно использовать Close.

func (*TCPConn) CloseWrite

func (c *TCPConn) CloseWrite() error

CloseWrite отключает запись в TCP-соединении. Большинству вызывающих кода достаточно использовать Close.

func (*TCPConn) File

func (c *TCPConn) File() (f *os.File, err error)

File возвращает копию базового os.File. Вызывающий код отвечает за закрытие f после завершения работы. Закрытие c не влияет на f, а закрытие f не влияет на c.

Дескриптор файла у возвращенного os.File отличается от дескриптора соединения. Попытка изменить свойства исходного объекта с помощью этого дубликата может как привести, так и не привести к желаемому результату.

В Windows дескриптор файла у возвращенного os.File нельзя использовать в других процессах.

func (*TCPConn) LocalAddr

func (c *TCPConn) LocalAddr() Addr

LocalAddr возвращает локальный сетевой адрес. Возвращаемый Addr является общим для всех вызовов LocalAddr, поэтому не изменяйте его.

func (*TCPConn) MultipathTCP 1.21

func (c *TCPConn) MultipathTCP() (bool, error)

MultipathTCP сообщает, используется ли в текущем соединении MPTCP.

Если Multipath TCP не поддерживается узлом или другой стороной либо намеренно или случайно блокируется промежуточным устройством, будет выполнен переход на TCP. Этот метод по возможности проверяет, продолжает ли использоваться MPTCP.

В Linux при использовании ядер версии >= v5.16 проверяется больше условий, что повышает точность результатов.

func (*TCPConn) Read

func (c *TCPConn) Read(b []byte) (int, error)

Read реализует метод Read интерфейса Conn.

func (*TCPConn) ReadFrom

func (c *TCPConn) ReadFrom(r io.Reader) (int64, error)

ReadFrom реализует метод ReadFrom интерфейса io.ReaderFrom.

func (*TCPConn) RemoteAddr

func (c *TCPConn) RemoteAddr() Addr

RemoteAddr возвращает удаленный сетевой адрес. Возвращаемый Addr является общим для всех вызовов RemoteAddr, поэтому не изменяйте его.

func (*TCPConn) SetDeadline

func (c *TCPConn) SetDeadline(t time.Time) error

SetDeadline реализует метод SetDeadline интерфейса Conn.

func (*TCPConn) SetKeepAlive

func (c *TCPConn) SetKeepAlive(keepalive bool) error

SetKeepAlive задает, должна ли операционная система отправлять через соединение сообщения keep-alive.

func (*TCPConn) SetKeepAliveConfig 1.23

func (c *TCPConn) SetKeepAliveConfig(config KeepAliveConfig) error

SetKeepAliveConfig настраивает сообщения keep-alive, отправляемые операционной системой.

func (*TCPConn) SetKeepAlivePeriod 1.2

func (c *TCPConn) SetKeepAlivePeriod(d time.Duration) error

SetKeepAlivePeriod задает время простоя соединения, после которого TCP начинает отправлять пробы keepalive.

Обратите внимание: вызов этого метода в Windows до Windows 10 версии 1709 сбрасывает KeepAliveInterval до системного значения по умолчанию, обычно равного 1 секунде.

func (*TCPConn) SetLinger

func (c *TCPConn) SetLinger(sec int) error

SetLinger задает поведение Close для соединения, в котором еще есть данные, ожидающие отправки или подтверждения.

Если sec < 0 (значение по умолчанию), операционная система завершает отправку данных в фоновом режиме.

Если sec == 0, операционная система отбрасывает все неотправленные или неподтвержденные данные.

Если sec > 0, данные отправляются в фоновом режиме, как и при sec < 0. В некоторых операционных системах, включая Linux, это может привести к блокировке Close до тех пор, пока все данные не будут отправлены или отброшены. В некоторых операционных системах по истечении sec секунд оставшиеся неотправленные данные могут быть отброшены.

func (*TCPConn) SetNoDelay

func (c *TCPConn) SetNoDelay(noDelay bool) error

SetNoDelay управляет тем, должна ли операционная система задерживать передачу пакетов в надежде отправить меньшее их количество (алгоритм Нейгла). По умолчанию установлено значение true (без задержки): это означает, что данные отправляются сразу после вызова Write.

func (*TCPConn) SetReadBuffer

func (c *TCPConn) SetReadBuffer(bytes int) error

SetReadBuffer задает размер буфера приема операционной системы, связанного с соединением.

func (*TCPConn) SetReadDeadline

func (c *TCPConn) SetReadDeadline(t time.Time) error

SetReadDeadline реализует метод SetReadDeadline интерфейса Conn.

func (*TCPConn) SetWriteBuffer

func (c *TCPConn) SetWriteBuffer(bytes int) error

SetWriteBuffer задает размер буфера передачи операционной системы, связанного с соединением.

func (*TCPConn) SetWriteDeadline

func (c *TCPConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline реализует метод SetWriteDeadline интерфейса Conn.

func (*TCPConn) SyscallConn 1.9

func (c *TCPConn) SyscallConn() (syscall.RawConn, error)

SyscallConn возвращает необработанное сетевое соединение. Оно реализует интерфейс syscall.Conn.

func (*TCPConn) Write

func (c *TCPConn) Write(b []byte) (int, error)

Write реализует метод Write интерфейса Conn.

func (*TCPConn) WriteTo 1.22

func (c *TCPConn) WriteTo(w io.Writer) (int64, error)

WriteTo реализует метод WriteTo интерфейса io.WriterTo.

type TCPListener

TCPListener — это сетевой прослушиватель TCP. Обычно клиентам следует использовать переменные типа Listener, а не предполагать, что используется TCP.

type TCPListener struct {
    // contains filtered or unexported fields
}

func ListenTCP

func ListenTCP(network string, laddr *TCPAddr) (*TCPListener, error)

ListenTCP действует как Listen для сетей TCP.

Сеть должна иметь имя сети TCP; подробности см. в описании func Dial.

Если поле IP в laddr равно nil или содержит неопределённый IP-адрес, ListenTCP прослушивает все доступные одноадресные и любые адреса IP локальной системы. Если поле Port в laddr равно 0, номер порта выбирается автоматически.

func (*TCPListener) Accept

func (l *TCPListener) Accept() (Conn, error)

Accept реализует метод Accept интерфейса Listener; он ожидает следующего вызова и возвращает обобщённый Conn.

func (*TCPListener) AcceptTCP

func (l *TCPListener) AcceptTCP() (*TCPConn, error)

AcceptTCP принимает следующий входящий вызов и возвращает новое соединение.

func (*TCPListener) Addr

func (l *TCPListener) Addr() Addr

Addr возвращает сетевой адрес прослушивателя типа *TCPAddr. Возвращаемый Addr общий для всех вызовов Addr, поэтому не изменяйте его.

func (*TCPListener) Close

func (l *TCPListener) Close() error

Close прекращает прослушивание TCP-адреса. Уже принятые соединения не закрываются.

func (*TCPListener) File

func (l *TCPListener) File() (f *os.File, err error)

File возвращает копию базового os.File. Вызывающий код отвечает за закрытие f по завершении работы. Закрытие l не влияет на f, а закрытие f не влияет на l.

Дескриптор файла возвращённого os.File отличается от дескриптора соединения. Попытка изменить свойства исходного объекта с помощью этой копии может как привести, так и не привести к желаемому результату.

В Windows дескриптор файла возвращённого os.File нельзя использовать в других процессах.

func (*TCPListener) SetDeadline

func (l *TCPListener) SetDeadline(t time.Time) error

SetDeadline задаёт срок ожидания, связанный с прослушивателем. Нулевое значение времени отключает срок ожидания.

func (*TCPListener) SyscallConn 1.10

func (l *TCPListener) SyscallConn() (syscall.RawConn, error)

SyscallConn возвращает необработанное сетевое соединение. Оно реализует интерфейс syscall.Conn.

Возвращённый RawConn поддерживает только вызов Control. Read и Write возвращают ошибку.

type UDPAddr

UDPAddr представляет адрес конечной точки UDP.

type UDPAddr struct {
    IP   IP
    Port int
    Zone string // IPv6 scoped addressing zone; added in Go 1.1
}

func ResolveUDPAddr

func ResolveUDPAddr(network, address string) (*UDPAddr, error)

ResolveUDPAddr возвращает адрес конечной точки UDP.

Сеть должна иметь имя сети UDP.

Если хост в параметре address не является буквальным IP-адресом или порт не является буквальным номером порта, ResolveUDPAddr разрешает адрес в адрес конечной точки UDP. В противном случае он разбирает адрес как пару из буквального IP-адреса и номера порта. В параметре address можно указать имя хоста, но делать это не рекомендуется, поскольку будет возвращен не более чем один из IP-адресов этого имени.

Описание параметров network и address см. в func Dial.

func UDPAddrFromAddrPort 1.18

func UDPAddrFromAddrPort(addr netip.AddrPort) *UDPAddr

UDPAddrFromAddrPort возвращает addr как UDPAddr. Если addr.IsValid() возвращает false, в поле IP возвращённого UDPAddr будет nil, что обозначает неопределённый адрес, не привязанный к семейству адресов.

func (*UDPAddr) AddrPort 1.18

func (a *UDPAddr) AddrPort() netip.AddrPort

AddrPort возвращает UDPAddr a в виде netip.AddrPort.

Если значение a.Port не помещается в uint16, оно молча усекается.

Если a равно nil, возвращается нулевое значение.

func (*UDPAddr) Network

func (a *UDPAddr) Network() string

Network возвращает имя сети адреса — "udp".

func (*UDPAddr) String

func (a *UDPAddr) String() string

type UDPConn

UDPConn реализует интерфейсы Conn и PacketConn для сетевых соединений UDP.

type UDPConn struct {
    // contains filtered or unexported fields
}

func DialUDP

func DialUDP(network string, laddr, raddr *UDPAddr) (*UDPConn, error)

DialUDP действует как Dial для сетей UDP.

Сеть должна иметь имя сети UDP; подробности см. в описании func Dial.

Если laddr равно nil, локальный адрес выбирается автоматически. Если поле IP в raddr равно nil или содержит неопределённый IP-адрес, предполагается локальная система.

func ListenMulticastUDP

func ListenMulticastUDP(network string, ifi *Interface, gaddr *UDPAddr) (*UDPConn, error)

ListenMulticastUDP действует как ListenPacket для сетей UDP, но принимает адрес группы на определённом сетевом интерфейсе.

Сеть должна иметь имя сети UDP; подробности см. в описании func Dial.

ListenMulticastUDP прослушивает все доступные IP-адреса локальной системы, включая многоадресный IP-адрес группы. Если ifi равно nil, ListenMulticastUDP использует назначенный системой интерфейс многоадресной рассылки. Однако это не рекомендуется, поскольку выбор зависит от платформы и иногда может потребовать настройки маршрутизации. Если поле Port в gaddr равно 0, номер порта выбирается автоматически.

ListenMulticastUDP предназначен лишь для удобства при разработке простых небольших приложений. Для общего применения существуют пакеты golang.org/x/net/ipv4 и golang.org/x/net/ipv6.

Обратите внимание, что ListenMulticastUDP установит для параметра сокета IP_MULTICAST_LOOP значение 0 в разделе IPPROTO_IP, чтобы отключить возврат многоадресных пакетов отправителю.

func ListenUDP

func ListenUDP(network string, laddr *UDPAddr) (*UDPConn, error)

ListenUDP действует как ListenPacket для сетей UDP.

Сеть должна иметь имя сети UDP; подробности см. в описании func Dial.

Если поле IP в laddr равно nil или содержит неопределённый IP-адрес, ListenUDP прослушивает все доступные IP-адреса локальной системы, кроме многоадресных IP-адресов. Если поле Port в laddr равно 0, номер порта выбирается автоматически.

func (*UDPConn) Close

func (c *UDPConn) Close() error

Close закрывает соединение.

func (*UDPConn) File

func (c *UDPConn) File() (f *os.File, err error)

File возвращает копию базового os.File. Вызывающий код отвечает за закрытие f по завершении работы. Закрытие c не влияет на f, а закрытие f не влияет на c.

Дескриптор файла возвращённого os.File отличается от дескриптора соединения. Попытка изменить свойства исходного объекта с помощью этой копии может как привести, так и не привести к желаемому результату.

В Windows дескриптор файла возвращённого os.File нельзя использовать в других процессах.

func (*UDPConn) LocalAddr

func (c *UDPConn) LocalAddr() Addr

LocalAddr возвращает локальный сетевой адрес. Возвращаемый Addr используется всеми вызовами LocalAddr, поэтому не изменяйте его.

func (*UDPConn) Read

func (c *UDPConn) Read(b []byte) (int, error)

Read реализует метод Read интерфейса Conn.

func (*UDPConn) ReadFrom

func (c *UDPConn) ReadFrom(b []byte) (int, Addr, error)

ReadFrom реализует метод ReadFrom интерфейса PacketConn.

func (*UDPConn) ReadFromUDP

func (c *UDPConn) ReadFromUDP(b []byte) (n int, addr *UDPAddr, err error)

ReadFromUDP работает как UDPConn.ReadFrom, но возвращает UDPAddr.

func (*UDPConn) ReadFromUDPAddrPort 1.18

func (c *UDPConn) ReadFromUDPAddrPort(b []byte) (n int, addr netip.AddrPort, err error)

ReadFromUDPAddrPort работает как ReadFrom, но возвращает netip.AddrPort.

Если c привязан к неопределённому адресу, адрес возвращённого netip.AddrPort может быть IPv4-адресом, отображённым в IPv6. Используйте netip.Addr.Unmap, чтобы получить адрес без префикса IPv6.

func (*UDPConn) ReadMsgUDP 1.1

func (c *UDPConn) ReadMsgUDP(b, oob []byte) (n, oobn, flags int, addr *UDPAddr, err error)

ReadMsgUDP считывает сообщение из c, копируя полезную нагрузку в b, а связанные с ней внеполосные данные — в oob. Функция возвращает количество байтов, скопированных в b, количество байтов, скопированных в oob, флаги, установленные для сообщения, и адрес источника сообщения.

Пакеты golang.org/x/net/ipv4 и golang.org/x/net/ipv6 можно использовать для управления параметрами сокета на уровне IP в oob.

func (*UDPConn) ReadMsgUDPAddrPort 1.18

func (c *UDPConn) ReadMsgUDPAddrPort(b, oob []byte) (n, oobn, flags int, addr netip.AddrPort, err error)

ReadMsgUDPAddrPort работает как UDPConn.ReadMsgUDP, но возвращает netip.AddrPort вместо UDPAddr.

func (*UDPConn) RemoteAddr

func (c *UDPConn) RemoteAddr() Addr

RemoteAddr возвращает удалённый сетевой адрес. Возвращаемый Addr используется всеми вызовами RemoteAddr, поэтому не изменяйте его.

func (*UDPConn) SetDeadline

func (c *UDPConn) SetDeadline(t time.Time) error

SetDeadline реализует метод SetDeadline интерфейса Conn.

func (*UDPConn) SetReadBuffer

func (c *UDPConn) SetReadBuffer(bytes int) error

SetReadBuffer задаёт размер буфера приёма операционной системы, связанного с соединением.

func (*UDPConn) SetReadDeadline

func (c *UDPConn) SetReadDeadline(t time.Time) error

SetReadDeadline реализует метод SetReadDeadline интерфейса Conn.

func (*UDPConn) SetWriteBuffer

func (c *UDPConn) SetWriteBuffer(bytes int) error

SetWriteBuffer задаёт размер буфера передачи операционной системы, связанного с соединением.

func (*UDPConn) SetWriteDeadline

func (c *UDPConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline реализует метод SetWriteDeadline интерфейса Conn.

func (*UDPConn) SyscallConn 1.9

func (c *UDPConn) SyscallConn() (syscall.RawConn, error)

SyscallConn возвращает необработанное сетевое соединение. Оно реализует интерфейс syscall.Conn.

func (*UDPConn) Write

func (c *UDPConn) Write(b []byte) (int, error)

Write реализует метод Write интерфейса Conn.

func (*UDPConn) WriteMsgUDP 1.1

func (c *UDPConn) WriteMsgUDP(b, oob []byte, addr *UDPAddr) (n, oobn int, err error)

WriteMsgUDP отправляет сообщение по адресу addr через c, если c не подключено, или на удалённый адрес c, если c подключено (в этом случае addr должен быть nil). Полезная нагрузка копируется из b, а связанные с ней внеполосные данные — из oob. Функция возвращает количество записанных байтов полезной нагрузки и внеполосных данных.

Пакеты golang.org/x/net/ipv4 и golang.org/x/net/ipv6 можно использовать для управления параметрами сокета на уровне IP в oob.

func (*UDPConn) WriteMsgUDPAddrPort 1.18

func (c *UDPConn) WriteMsgUDPAddrPort(b, oob []byte, addr netip.AddrPort) (n, oobn int, err error)

WriteMsgUDPAddrPort работает как UDPConn.WriteMsgUDP, но принимает netip.AddrPort вместо UDPAddr.

func (*UDPConn) WriteTo

func (c *UDPConn) WriteTo(b []byte, addr Addr) (int, error)

WriteTo реализует метод WriteTo интерфейса PacketConn.

Пример

Код:

// Unlike Dial, ListenPacket creates a connection without any
// association with peers.
conn, err := net.ListenPacket("udp", ":0")
if err != nil {
    log.Fatal(err)
}
defer conn.Close()

dst, err := net.ResolveUDPAddr("udp", "192.0.2.1:2000")
if err != nil {
    log.Fatal(err)
}

// The connection can write data to the desired address.
_, err = conn.WriteTo([]byte("data"), dst)
if err != nil {
    log.Fatal(err)
}

func (*UDPConn) WriteToUDP

func (c *UDPConn) WriteToUDP(b []byte, addr *UDPAddr) (int, error)

WriteToUDP работает как UDPConn.WriteTo, но принимает UDPAddr.

func (*UDPConn) WriteToUDPAddrPort 1.18

func (c *UDPConn) WriteToUDPAddrPort(b []byte, addr netip.AddrPort) (int, error)

WriteToUDPAddrPort работает как UDPConn.WriteTo, но принимает netip.AddrPort.

type UnixAddr

UnixAddr представляет адрес конечной точки доменного сокета Unix.

В Linux имя, начинающееся с "@", обозначает абстрактный адрес сокета: при передаче адреса ядру символ "@" заменяется на байт NUL, и сокет помещается в абстрактное пространство имён, а не в файловую систему. Абстрактные сокеты — это особенность Linux; на других платформах имя, начинающееся с "@", рассматривается как буквальный путь в файловой системе.

type UnixAddr struct {
    Name string
    Net  string
}

func ResolveUnixAddr

func ResolveUnixAddr(network, address string) (*UnixAddr, error)

ResolveUnixAddr возвращает адрес конечной точки доменного сокета Unix.

Сеть должна быть именем сети Unix.

Описание параметров сети и адреса см. в описании функции Dial.

func (*UnixAddr) Network

func (a *UnixAddr) Network() string

Network возвращает имя сети адреса: "unix", "unixgram" или "unixpacket".

func (*UnixAddr) String

func (a *UnixAddr) String() string

type UnixConn

UnixConn реализует интерфейс Conn для соединений с доменными сокетами Unix.

type UnixConn struct {
    // contains filtered or unexported fields
}

func DialUnix

func DialUnix(network string, laddr, raddr *UnixAddr) (*UnixConn, error)

DialUnix работает как Dial для сетей Unix.

Сеть должна быть именем сети Unix; подробности см. в описании функции Dial.

Если laddr не равен nil, он используется в качестве локального адреса соединения.

func ListenUnixgram

func ListenUnixgram(network string, laddr *UnixAddr) (*UnixConn, error)

ListenUnixgram работает как ListenPacket для сетей Unix.

Сеть должна быть "unixgram".

func (*UnixConn) Close

func (c *UnixConn) Close() error

Close закрывает соединение.

func (*UnixConn) CloseRead 1.1

func (c *UnixConn) CloseRead() error

CloseRead прекращает чтение из доменного соединения Unix. Большинству вызывающих программ следует просто использовать UnixConn.Close.

func (*UnixConn) CloseWrite 1.1

func (c *UnixConn) CloseWrite() error

CloseWrite прекращает запись в доменное соединение Unix. Большинству вызывающих программ следует просто использовать UnixConn.Close.

func (*UnixConn) File

func (c *UnixConn) File() (f *os.File, err error)

File возвращает копию базового os.File. Вызывающий код должен закрыть f по завершении работы. Закрытие c не влияет на f, а закрытие f не влияет на c.

Дескриптор файла возвращённого os.File отличается от дескриптора соединения. Попытка изменить свойства оригинала с помощью этого дубликата может привести или не привести к желаемому результату.

В Windows дескриптор файла возвращённого os.File нельзя использовать в других процессах.

func (*UnixConn) LocalAddr

func (c *UnixConn) LocalAddr() Addr

LocalAddr возвращает локальный сетевой адрес. Возвращаемый Addr является общим для всех вызовов LocalAddr, поэтому не изменяйте его.

func (*UnixConn) Read

func (c *UnixConn) Read(b []byte) (int, error)

Read реализует метод Read интерфейса Conn.

func (*UnixConn) ReadFrom

func (c *UnixConn) ReadFrom(b []byte) (int, Addr, error)

ReadFrom реализует метод PacketConn.ReadFrom.

func (*UnixConn) ReadFromUnix

func (c *UnixConn) ReadFromUnix(b []byte) (int, *UnixAddr, error)

ReadFromUnix работает как UnixConn.ReadFrom, но возвращает UnixAddr.

func (*UnixConn) ReadMsgUnix

func (c *UnixConn) ReadMsgUnix(b, oob []byte) (n, oobn, flags int, addr *UnixAddr, err error)

ReadMsgUnix считывает сообщение из c, копируя полезную нагрузку в b, а связанные с ней внеполосные данные — в oob. Метод возвращает число байтов, скопированных в b, число байтов, скопированных в oob, флаги, установленные для сообщения, и адрес отправителя сообщения.

Обратите внимание: если len(b) == 0 и len(oob) > 0, эта функция всё равно прочитает (и отбросит) 1 байт из соединения.

func (*UnixConn) RemoteAddr

func (c *UnixConn) RemoteAddr() Addr

RemoteAddr возвращает удалённый сетевой адрес. Возвращаемый Addr является общим для всех вызовов RemoteAddr, поэтому не изменяйте его.

func (*UnixConn) SetDeadline

func (c *UnixConn) SetDeadline(t time.Time) error

SetDeadline реализует метод SetDeadline интерфейса Conn.

func (*UnixConn) SetReadBuffer

func (c *UnixConn) SetReadBuffer(bytes int) error

SetReadBuffer задаёт размер буфера приёма операционной системы, связанного с соединением.

func (*UnixConn) SetReadDeadline

func (c *UnixConn) SetReadDeadline(t time.Time) error

SetReadDeadline реализует метод SetReadDeadline интерфейса Conn.

func (*UnixConn) SetWriteBuffer

func (c *UnixConn) SetWriteBuffer(bytes int) error

SetWriteBuffer задаёт размер буфера передачи операционной системы, связанного с соединением.

func (*UnixConn) SetWriteDeadline

func (c *UnixConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline реализует метод SetWriteDeadline интерфейса Conn.

func (*UnixConn) SyscallConn 1.9

func (c *UnixConn) SyscallConn() (syscall.RawConn, error)

SyscallConn возвращает низкоуровневое сетевое соединение. Оно реализует интерфейс syscall.Conn.

func (*UnixConn) Write

func (c *UnixConn) Write(b []byte) (int, error)

Write реализует метод Write интерфейса Conn.

func (*UnixConn) WriteMsgUnix

func (c *UnixConn) WriteMsgUnix(b, oob []byte, addr *UnixAddr) (n, oobn int, err error)

WriteMsgUnix отправляет сообщение по адресу addr через c, копируя полезную нагрузку из b, а связанные с ней внеполосные данные — из oob. Метод возвращает число записанных байтов полезной нагрузки и внеполосных данных.

Обратите внимание: если len(b) == 0 и len(oob) > 0, эта функция всё равно запишет 1 байт в соединение.

func (*UnixConn) WriteTo

func (c *UnixConn) WriteTo(b []byte, addr Addr) (int, error)

WriteTo реализует метод PacketConn.WriteTo.

func (*UnixConn) WriteToUnix

func (c *UnixConn) WriteToUnix(b []byte, addr *UnixAddr) (int, error)

WriteToUnix работает как UnixConn.WriteTo, но принимает UnixAddr.

type UnixListener

UnixListener — это прослушиватель доменных сокетов Unix. Клиентам обычно следует использовать переменные типа Listener, а не полагаться на доменные сокеты Unix.

type UnixListener struct {
    // contains filtered or unexported fields
}

func ListenUnix

func ListenUnix(network string, laddr *UnixAddr) (*UnixListener, error)

ListenUnix работает как Listen для сетей Unix.

Сеть должна быть "unix" или "unixpacket".

func (*UnixListener) Accept

func (l *UnixListener) Accept() (Conn, error)

Accept реализует метод Accept интерфейса Listener. Возвращаемые соединения будут иметь тип *UnixConn.

func (*UnixListener) AcceptUnix

func (l *UnixListener) AcceptUnix() (*UnixConn, error)

AcceptUnix принимает следующий входящий вызов и возвращает новое соединение.

func (*UnixListener) Addr

func (l *UnixListener) Addr() Addr

Addr возвращает сетевой адрес прослушивателя. Возвращаемый Addr является общим для всех вызовов Addr, поэтому не изменяйте его.

func (*UnixListener) Close

func (l *UnixListener) Close() error

Close прекращает прослушивание Unix-адреса. Уже принятые соединения не закрываются.

func (*UnixListener) File

func (l *UnixListener) File() (f *os.File, err error)

File возвращает копию базового os.File. Вызывающий код должен закрыть f по завершении работы. Закрытие l не влияет на f, а закрытие f не влияет на l.

Дескриптор файла возвращённого os.File отличается от дескриптора соединения. Попытка изменить свойства оригинала с помощью этого дубликата может привести или не привести к желаемому результату.

В Windows дескриптор файла возвращённого os.File нельзя использовать в других процессах.

func (*UnixListener) SetDeadline

func (l *UnixListener) SetDeadline(t time.Time) error

SetDeadline задаёт срок ожидания, связанный с прослушивателем. Нулевое значение времени отключает срок ожидания.

func (*UnixListener) SetUnlinkOnClose 1.8

func (l *UnixListener) SetUnlinkOnClose(unlink bool)

SetUnlinkOnClose задаёт, следует ли удалять файл базового сокета из файловой системы при закрытии прослушивателя.

По умолчанию файл сокета удаляется только в том случае, если его создал пакет net. То есть если прослушиватель и базовый файл сокета были созданы вызовом Listen или ListenUnix, то при закрытии прослушивателя файл сокета будет удалён. Однако если прослушиватель был создан вызовом FileListener для использования уже существующего файла сокета, то по умолчанию при закрытии прослушивателя файл сокета не удаляется.

func (*UnixListener) SyscallConn 1.10

func (l *UnixListener) SyscallConn() (syscall.RawConn, error)

SyscallConn возвращает низкоуровневое сетевое соединение. Оно реализует интерфейс syscall.Conn.

Возвращаемый syscall.RawConn поддерживает только вызов Control. Вызовы Read и Write возвращают ошибку.

type UnknownNetworkError

type UnknownNetworkError string

func (UnknownNetworkError) Error

func (e UnknownNetworkError) Error() string

func (UnknownNetworkError) Temporary

func (e UnknownNetworkError) Temporary() bool

func (UnknownNetworkError) Timeout

func (e UnknownNetworkError) Timeout() bool

Ошибки

  • ☞

    В JS функции FileConn, FileListener и FilePacketConn не реализованы.

  • ☞

    В JS методы и функции, связанные с Interface, не реализованы.

  • ☞

    В AIX, DragonFly BSD, NetBSD, OpenBSD, Plan 9 и Solaris метод MulticastAddrs интерфейса Interface не реализован.

  • ☞

    На всех POSIX-платформах чтение из сети "ip4" с помощью метода ReadFrom или ReadFromIP может не вернуть полный пакет IPv4, включая его заголовок, даже если доступно свободное место. Это может происходить даже в случаях, когда Read или ReadMsgIP могли бы вернуть полный пакет. По этой причине рекомендуется не использовать эти методы, если важно получить полный пакет.

    Правила совместимости Go 1 не позволяют нам изменить поведение этих методов; вместо них используйте Read или ReadMsgIP.

  • ☞

    В JS и Plan 9 методы и функции, связанные с IPConn, не реализованы.

  • ☞

    В DragonFly BSD и OpenBSD прослушивание сетей "tcp" и "udp" не принимает подключения одновременно по IPv4 и IPv6. Это связано с тем, что трафик IPv4 не будет направляться на сокет IPv6 — для поддержки обоих семейств адресов требуются два отдельных сокета. Подробности см. в inet6(4).

  • ☞

    В Windows метод Write типа syscall.RawConn не интегрирован с сетевым опросчиком среды выполнения. Он не может ожидать, пока соединение станет доступным для записи, и не учитывает сроки ожидания. Если предоставленный пользователем обратный вызов возвращает false, метод Write немедленно завершается с ошибкой.

  • ☞

    В JS и Plan 9 методы Control, Read и Write типа syscall.RawConn не реализованы.

  • ☞

    В JS метод File типов TCPConn и TCPListener не реализован.

  • ☞

    В Plan 9 методы ReadMsgUDP и WriteMsgUDP типа UDPConn не реализованы.

  • ☞

    В JS методы и функции, связанные с UDPConn, не реализованы.

  • ☞

    В JS, WASIP1 и Plan 9 методы и функции, связанные с UnixConn и UnixListener, не реализованы.

  • ☞

    В Windows методы и функции, связанные с UnixConn и UnixListener, не работают для "unixgram" и "unixpacket".

Подкаталоги

Название Краткое описание
..
http Пакет http предоставляет реализации HTTP-клиента и HTTP-сервера.
cgi Пакет cgi реализует CGI (Common Gateway Interface) согласно спецификации RFC 3875.
cookiejar Пакет cookiejar реализует соответствующий [RFC 6265] [http.CookieJar] в памяти.
fcgi Пакет fcgi реализует протокол FastCGI.
httptest Пакет httptest предоставляет инструменты для тестирования HTTP.
httptrace Пакет httptrace предоставляет средства для отслеживания событий в HTTP-запросах клиента.
httputil Пакет httputil предоставляет вспомогательные функции HTTP, дополняющие более распространённые функции пакета net/http.
pprof Пакет pprof предоставляет через HTTP-сервер данные профилирования среды выполнения в формате, ожидаемом инструментом визуализации pprof.
mail Пакет mail реализует разбор почтовых сообщений.
netip Пакет netip определяет тип IP-адреса, представляющий собой компактное значение.
rpc Пакет rpc предоставляет доступ к экспортируемым методам объекта через сеть или другое соединение ввода-вывода.
jsonrpc Пакет jsonrpc реализует ClientCodec и ServerCodec для JSON-RPC 1.0 в пакете rpc.
smtp Пакет smtp реализует протокол Simple Mail Transfer Protocol, определённый в RFC 5321.
textproto Пакет textproto реализует универсальную поддержку текстовых протоколов запросов и ответов, таких как HTTP, NNTP и SMTP.
url Пакет url разбирает URL и реализует экранирование параметров запроса.

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/net/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API