目录 搜索
archive archive/tar archive/zip bufio bufio(缓存) builtin builtin(内置包) bytes bytes(包字节) compress compress/bzip2(压缩/bzip2) compress/flate(压缩/flate) compress/gzip(压缩/gzip) compress/lzw(压缩/lzw) compress/zlib(压缩/zlib) container container/heap(容器数据结构heap) container/list(容器数据结构list) container/ring(容器数据结构ring) context context(上下文) crypto crypto(加密) crypto/aes(加密/aes) crypto/cipher(加密/cipher) crypto/des(加密/des) crypto/dsa(加密/dsa) crypto/ecdsa(加密/ecdsa) crypto/elliptic(加密/elliptic) crypto/hmac(加密/hmac) crypto/md5(加密/md5) crypto/rand(加密/rand) crypto/rc4(加密/rc4) crypto/rsa(加密/rsa) crypto/sha1(加密/sha1) crypto/sha256(加密/sha256) crypto/sha512(加密/sha512) crypto/subtle(加密/subtle) crypto/tls(加密/tls) crypto/x509(加密/x509) crypto/x509/pkix(加密/x509/pkix) database database/sql(数据库/sql) database/sql/driver(数据库/sql/driver) debug debug/dwarf(调试/dwarf) debug/elf(调试/elf) debug/gosym(调试/gosym) debug/macho(调试/macho) debug/pe(调试/pe) debug/plan9obj(调试/plan9obj) encoding encoding(编码) encoding/ascii85(编码/ascii85) encoding/asn1(编码/asn1) encoding/base32(编码/base32) encoding/base64(编码/base64) encoding/binary(编码/binary) encoding/csv(编码/csv) encoding/gob(编码/gob) encoding/hex(编码/hex) encoding/json(编码/json) encoding/pem(编码/pem) encoding/xml(编码/xml) errors errors(错误) expvar expvar flag flag(命令行参数解析flag包) fmt fmt go go/ast(抽象语法树) go/build go/constant(常量) go/doc(文档) go/format(格式) go/importer go/parser go/printer go/scanner(扫描仪) go/token(令牌) go/types(类型) hash hash(散列) hash/adler32 hash/crc32 hash/crc64 hash/fnv html html html/template(模板) image image(图像) image/color(颜色) image/color/palette(调色板) image/draw(绘图) image/gif image/jpeg image/png index index/suffixarray io io io/ioutil log log log/syslog(日志系统) math math math/big math/big math/bits math/bits math/cmplx math/cmplx math/rand math/rand mime mime mime/multipart(多部分) mime/quotedprintable net net net/http net/http net/http/cgi net/http/cookiejar net/http/fcgi net/http/httptest net/http/httptrace net/http/httputil net/http/internal net/http/pprof net/mail net/mail net/rpc net/rpc net/rpc/jsonrpc net/smtp net/smtp net/textproto net/textproto net/url net/url os os os/exec os/signal os/user path path path/filepath(文件路径) plugin plugin(插件) reflect reflect(反射) regexp regexp(正则表达式) regexp/syntax runtime runtime(运行时) runtime/debug(调试) runtime/internal/sys runtime/pprof runtime/race(竞争) runtime/trace(执行追踪器) sort sort(排序算法) strconv strconv(转换) strings strings(字符串) sync sync(同步) sync/atomic(原子操作) syscall syscall(系统调用) testing testing(测试) testing/iotest testing/quick text text/scanner(扫描文本) text/tabwriter text/template(定义模板) text/template/parse time time(时间戳) unicode unicode unicode/utf16 unicode/utf8 unsafe unsafe
文字

  • import "net"

  • Overview

  • Index

  • Examples

  • Subdirectories

概观

Package net为网络I/O提供了一个便携式接口,包括TCP/IP,UDP,域名解析和Unix域套接字。

虽然该软件包提供对低级网络原语的访问,但大多数客户端只需要Dial,Listen和Accept函数以及相关的Conn和Listener接口提供的基本接口。crypto/tls包使用相同的接口和类似的Dial和Listen功能。

拨号功能连接到服务器:

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中列出的服务器,或者可以使用调用C库例程(如getaddrinfo和getnameinfo)的基于cgo的解析器。

默认情况下,使用纯粹的Go解析器,因为阻止的DNS请求仅消耗goroutine,而阻塞的C调用消耗操作系统线程。当cgo可用时,将使用基于cgo的解析器代替各种条件:在不允许程序发出直接DNS请求(OS X),存在LOCALDOMAIN环境变量(即使为空)的系统上,当ASR_CONFIG环境变量非空(仅限OpenBSD)时,RES_OPTIONS或HOSTALIASES环境变量非空,当/etc/resolv.conf或/etc/nsswitch.conf指定使用Go解析器未实现的功能时,并且当查找的名字以.local结尾或者是mDNS名称时。

通过将GODEBUG环境变量(请参阅程序包运行时)的netdns值设置为go或cgo,可以覆盖解析程序决策,如下所示:

export GODEBUG=netdns=go    # force pure Go resolverexport GODEBUG=netdns=cgo   # force cgo resolver

通过设置netgo或netcgo构建标记来构建Go源树时,也可以强制做出决定。

数字netdns设置(如GODEBUG = netdns = 1)会导致解析器打印有关其决策的调试信息。要强制特定的解析器同时打印调试信息,请使用加号连接两个设置,如GODEBUG = netdns = go + 1。

在计划9中,解析器总是访问/net /cs和/net/dns。

在Windows上,解析器总是使用C库函数,例如GetAddrInfo和DnsQuery。

索引

  • Constants

  • Variables

  • func InterfaceAddrs() ([]Addr, error)

  • func Interfaces() ([]Interface, error)

  • 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 LookupIP(host string) ([]IP, error)

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

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

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

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

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

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

  • type Addr

  • 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)

  • func Pipe() (Conn, Conn)

  • type DNSConfigError

  • func (e *DNSConfigError) Error() string

  • func (e *DNSConfigError) Temporary() bool

  • func (e *DNSConfigError) Timeout() bool

  • type DNSError

  • func (e *DNSError) Error() string

  • func (e *DNSError) Temporary() bool

  • func (e *DNSError) Timeout() bool

  • type Dialer

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

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

  • 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 ParseCIDR(s string) (IP, *IPNet, error)

  • func ParseIP(s string) IP

  • 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) 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 (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 Listener

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

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

  • type MX

  • type NS

  • type OpError

  • func (e *OpError) Error() string

  • func (e *OpError) Temporary() bool

  • func (e *OpError) Timeout() bool

  • 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

  • type Resolver

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

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

  • func (r *Resolver) LookupHost(ctx context.Context, host string) (addrs []string, err 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) LookupPort(ctx context.Context, network, service string) (port int, err error)

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

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

  • type SRV

  • type TCPAddr

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

  • 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) 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) 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)

  • 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

  • type UDPAddr

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

  • 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) (int, *UDPAddr, error)

  • func (c *UDPConn) ReadMsgUDP(b, oob []byte) (n, oobn, flags int, addr *UDPAddr, 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) WriteTo(b []byte, addr Addr) (int, error)

  • func (c *UDPConn) WriteToUDP(b []byte, addr *UDPAddr) (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)

  • type UnknownNetworkError

  • func (e UnknownNetworkError) Error() string

  • func (e UnknownNetworkError) Temporary() bool

  • func (e UnknownNetworkError) Timeout() bool

  • Bugs

例子

CIDRMask IP.DefaultMask IP.Mask IPv4 IPv4Mask Listener ParseCIDR ParseIP

包文件

addrselect.go cgo_stub.go conf.go dial.go dnsclient.go dnsclient_unix.go dnsconfig_unix.go dnsmsg.go error_posix.go fd_unix.go file.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 net.go nss.go parse.go pipe.go port.go port_unix.go rawconn.go sendfile_linux.go sock_cloexec.go sock_linux.go sock_posix.go sockopt_linux.go sockopt_posix.go sockoptip_linux.go sockoptip_posix.go tcpsock.go tcpsock_posix.go tcpsockopt_posix.go tcpsockopt_unix.go udpsock.go udpsock_posix.go unixsock.go unixsock_posix.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是包级查找功能使用的解析器,Dialer没有指定的解析器。

var DefaultResolver = &Resolver{}

OpError中包含各种错误。

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

func InterfaceAddrs

func InterfaceAddrs() ([]Addr, error)

InterfaceAddrs返回系统的单播接口地址列表。

返回的列表不标识关联的接口; 使用Interfaces和Interface.Addrs获取更多细节。

func Interfaces

func Interfaces() ([]Interface, error)

Interfaces返回系统网络接口的列表。

func JoinHostPort

func JoinHostPort(host, port string) string

JoinHostPort将主机和端口组合成“host:port”形式的网络地址。如果主机包含冒号(如文字IPv6地址中所示),则JoinHostPort返回“host:port”。

请参阅func拨号以获取主机和端口参数的说明。

func LookupAddr

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

LookupAddr对给定地址执行反向查找,返回映射到该地址的名称列表。

当使用主机C库解析器时,最多返回一个结果。要绕过主机解析器,请使用自定义解析器。

func LookupCNAME

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

LookupCNAME返回给定主机的规范名称。不关心规范名称的调用者可以直接调用LookupHost或LookupIP; 都将照顾解决规范名称作为查找的一部分。

规范名称是跟随零个或多个CNAME记录后的最终名称。只要主机解析为地址记录,则主机不包含DNS“CNAME”记录时,LookupCNAME不会返回错误。

func LookupHost

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

LookupHost使用本地解析器查找给定的主机。它返回该主机地址的一部分。

func LookupIP

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

LookupIP使用本地解析器查找主机。它返回该主机的IPv4和IPv6地址的一部分。

func LookupMX

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

LookupMX返回给定域名的DNS MX记录,并按喜好排序。

func LookupNS

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

LookupNS返回给定域名的DNS NS记录。

func LookupPort

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

LookupPort查找给定网络和服务的端口。

func LookupSRV

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

LookupSRV尝试解析给定服务,协议和域名的SRV查询。原型是“tcp”或“udp”。返回的记录按优先级排序,并按优先级权重随机排序。

LookupSRV根据RFC 2782构建DNS名称以查找。也就是说,它查找_service._proto.name。为了适应以非标准名称发布SRV记录的服务,如果service和proto都是空字符串,LookupSRV将直接查找名称。

func LookupTXT

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

LookupTXT返回给定域名的DNS TXT记录。

func SplitHostPort

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

SplitHostPort将形式为“host:port”,“host%zone:port”,“host:port”或“host%zone:port”的网络地址拆分为主机或主机%zone和端口。

hostport中的文字IPv6地址必须用方括号括起来,如“:: 1:80”,“:: 1%lo0:80”中所示。

有关hostport参数以及主机和端口结果的说明,请参见func Dial。

type Addr

Addr表示网络终点地址。

Network和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")}

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

Buffers 包含零个或多个要写入的字节。

在某些机器上,对于某些类型的连接,这会针对特定于操作系统的批处理写入操作(如“writev”)进行优化。

type Buffers [][]byte

func (*Buffers) Read

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

func (*Buffers) WriteTo

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

type Conn

Conn是一个通用的面向流的网络连接。

多个goroutines可以同时调用Conn上的方法。

type Conn interface {        // Read reads data from the connection.        // Read can be made to time out and return an Error with Timeout() == true        // 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 with Timeout() == true        // 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() error        // LocalAddr returns the local network address.        LocalAddr() Addr        // RemoteAddr returns the remote network address.        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 with a timeout (see type Error) 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.        //        // 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网络,地址格式为“主机:端口”。主机必须是文字IP地址或可以解析为IP地址的主机名。该端口必须是文字端口号或服务名称。如果主机是文字IPv6地址,则必须将其放在方括号中,如“2001:db8 :: 1:80”或“fe80 :: 1%zone:80”中所示。该区域指定RFC 4007中定义的文字IPv6地址的范围。函数JoinHostPort和SplitHostPort以这种形式操作一对主机和端口。当使用TCP,并且主机解析为多个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”,后跟冒号和文字协议号或协议名称,地址格式为“主机”。主机必须是文字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网络,如果主机为空或文字未指定的IP地址,如TCP和UDP的“:80”,“0.0.0.0:80”或“::: 80”,“”, IP为0.0.0.0“或”::“,则假定为本地系统。

对于Unix网络,地址必须是文件系统路径。

func DialTimeout

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

DialTimeout就像拨号一样,但需要超时。

如果需要,超时包括名称解析。当使用TCP时,并且地址参数中的主机解析为多个IP地址时,超时将分布在每个连续拨号上,以便每个拨号都有适当的连接时间。

请参阅func拨号以获取网络和地址参数的说明。

func FileConn

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

FileConn返回与打开的文件f相对应的网络连接的副本。完成后关闭f是主叫方的责任。关闭c不会影响f,关闭f不会影响c。

func Pipe

func Pipe() (Conn, Conn)

Pipe创建一个同步的内存中全双工网络连接; 两端都实现了Conn接口。一端的读取与另一端的写入相匹配,在两者之间直接复制数据; 没有内部缓冲。

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

type DNSError

DNSError代表DNS查找错误。

type DNSError struct {
        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}

func (*DNSError) Error

func (e *DNSError) Error() string

func (*DNSError) Temporary

func (e *DNSError) Temporary() bool

Temporary报告是否知道DNS错误是暂时的。这并不总是已知的; 由于临时错误,DNS查找可能会失败并返回Temporary返回false的DNSError。

func (*DNSError) Timeout

func (e *DNSError) Timeout() bool

Timeout报告DNS查询是否已知超时。这并不总是已知的; DNS查找可能由于超时而失败,并返回Timeout返回false的DNSError。

type Dialer

Diale包含用于连接到地址的选项。

每个字段的零值相当于没有该选项的拨号。因此使用拨号器的零值进行拨号相当于只拨打拨号功能。

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 enables RFC 6555-compliant "Happy Eyeballs"        // dialing when the network is "tcp" and the host in the        // address parameter resolves to both IPv4 and IPv6 addresses.        // This allows a client to tolerate networks where one address        // family is silently broken.
        DualStack bool        // FallbackDelay specifies the length of time to wait before        // spawning a fallback connection, when DualStack is enabled.        // If zero, a default delay of 300ms is used.
        FallbackDelay time.Duration        // KeepAlive specifies the keep-alive period for an active        // network connection.        // If zero, keep-alives are not enabled. Network protocols        // that do not support keep-alives ignore this field.
        KeepAlive time.Duration        // Resolver optionally specifies an alternate resolver to use.
        Resolver *Resolver        // Cancel is an optional channel whose closure indicates that        // the dial should be canceled. Not all types of dials support        // cancelation.        //        // Deprecated: Use DialContext instead.
        Cancel <-chan struct{}}

func (*Dialer) Dial

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

Dial 连接到指定网络上的地址。

请参阅func Dial以获取网络和地址参数的说明。

func (*Dialer) DialContext

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

DialContext使用提供的上下文连接到指定网络上的地址。

提供的上下文必须是非零。如果上下文在连接完成之前到期,则返回错误。一旦成功连接,上下文的任何到期都不会影响连接。

当使用TCP时,并且地址参数中的主机解析为多个网络地址时,任何拨号超时(来自d.Timeout或ctx)都会分布在每个连续的拨号盘上,这样每个拨号连接都有相应的一小部分时间。例如,如果主机有4个IP地址,并且超时时间为1分钟,则在尝试下一个地址之前,连接到每个单个地址的时间将为15秒。

请参阅func Dial以获取网络和地址参数的说明。

type Error

Error代表网络错误。

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

type Flags

type Flags uint
const (
        FlagUp           Flags = 1 << iota // interface is 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)

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使用以下格式之一将IEEE 802 MAC-48,EUI-48,EUI-64或20-octet IP over InfiniBand链路层地址解析为:

01:23:45:67:89:ab01:23:45:67:89:ab:cd:ef01:23:45:67:89:ab:cd:ef:00:00:01:23:45:67:89:ab:cd:ef:00:0001-23-45-67-89-ab01-23-45-67-89-ab-cd-ef01-23-45-67-89-ab-cd-ef-00-00-01-23-45-67-89-ab-cd-ef-00-000123.4567.89ab0123.4567.89ab.cdef0123.4567.89ab.cdef.0000.0123.4567.89ab.cdef.0000

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返回IPv4地址abcd的IP地址(16字节形式)

例子

package mainimport ("fmt""net")func main() {
	fmt.Println(net.IPv4(8, 8, 8, 8))}

func ParseCIDR

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

ParseCIDR将s解析为CIDR表示法IP地址和前缀长度,如RFC 4632和RFC 4291中定义的“192.0.2.0/24”或“2001:db8 :: / 32”。

它返回由IP和前缀长度暗示的IP地址和网络。例如,ParseCIDR(“192.0.2.1/24”)返回IP地址192.0.2.1和网络192.0.2.0/24。

例子

package mainimport ("fmt""log""net")func main() {
	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)}

func ParseIP

func ParseIP(s string) IP

ParseIP将s解析为IP地址,并返回结果。字符串s可以采用点分十进制(“192.0.2.1”)或IPv6(“2001:db8 :: 68”)形式。如果s不是IP地址的有效文本表示,则ParseIP返回nil。

例子

package mainimport ("fmt""net")func main() {
	fmt.Println(net.ParseIP("192.0.2.1"))
	fmt.Println(net.ParseIP("2001:db8::68"))
	fmt.Println(net.ParseIP("192.0.2"))}

func (IP) DefaultMask

func (ip IP) DefaultMask() IPMask

DefaultMask返回IP地址ip的默认IP掩码。只有IPv4地址具有默认掩码; 如果ip不是有效的IPv4地址,则DefaultMask返回nil。

例子

package mainimport ("fmt""net")func main() {
	ip := net.ParseIP("192.0.2.1")
	fmt.Println(ip.DefaultMask())}

func (IP) Equal

func (ip IP) Equal(x IP) bool

Equal 报告ip和x是否是相同的IP地址。IPv4地址和IPv6形式的相同地址被认为是相同的。

func (IP) IsGlobalUnicast

func (ip IP) IsGlobalUnicast() bool

IsGlobalUnicast报告ip是否是全球单播地址。

全局单播地址的标识使用RFC 1122,RFC 4632和RFC 4291中定义的地址类型标识,但IPv4定向广播地址除外。即使ip位于IPv4专用地址空间或本地IPv6单播地址空间,它也会返回true。

func (IP) IsInterfaceLocalMulticast

func (ip IP) IsInterfaceLocalMulticast() bool

IsInterfaceLocalMulticast报告ip是否是接口本地多播地址。

func (IP) IsLinkLocalMulticast

func (ip IP) IsLinkLocalMulticast() bool

IsLinkLocalMulticast报告ip是否是链路本地多播地址。

func (IP) IsLinkLocalUnicast

func (ip IP) IsLinkLocalUnicast() bool

IsLinkLocalUnicast报告ip是否是链路本地单播地址。

func (IP) IsLoopback

func (ip IP) IsLoopback() bool

IsLoopback报告ip是否是环回地址。

func (IP) IsMulticast

func (ip IP) IsMulticast() bool

IsMulticast报告ip是否是多播地址。

func (IP) IsUnspecified

func (ip IP) IsUnspecified() bool

IsUnspecified报告ip是否是未指定的地址,IPv4地址“0.0.0.0”或IPv6地址“::”。

func (IP) MarshalText

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

MarshalText实现了encoding.TextMarshaler接口。编码与String返回的一样,但有一个例外:当len(ip)为零时,它返回一个空片。

func (IP) Mask

func (ip IP) Mask(mask IPMask) IP

Mask返回用掩码掩码IP地址ip的结果。

例子

package mainimport ("fmt""net")func main() {
	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))}

func (IP) String

func (ip IP) String() string

String返回IP地址ip的字符串形式。它返回4种形式之一:

- "<nil>", if ip has length 0- dotted decimal ("192.0.2.1"), if ip is an IPv4 or IP4-mapped IPv6 address- IPv6 ("2001:db8::1"), if ip is a valid IPv6 address- the hexadecimal form of ip, without punctuation, if no other cases apply

func (IP) To16

func (ip IP) To16() IP

To16将IP地址ip转换为16字节的表示形式。如果ip不是IP地址(它是错误的长度),To16返回nil。

func (IP) To4

func (ip IP) To4() IP

To4将IPv4地址ip转换为4字节表示形式。如果ip不是IPv4地址,则To4返回nil。

func (*IP) UnmarshalText

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}

func ResolveIPAddr

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

ResolveIPAddr返回IP结束点的地址。

网络必须是IP网络名称。

如果地址参数中的主机不是文字IP地址,则ResolveIPAddr将地址解析为IP终点的地址。否则,它会将该地址解析为文字IP地址。地址参数可以使用主机名称,但不建议这样做,因为它最多只会返回一个主机名称的IP地址。

请参阅func拨号以获取网络和地址参数的说明。

func (*IPAddr) Network

func (a *IPAddr) Network() string

Network返回地址的网络名称,“ip”。

func (*IPAddr) String

func (a *IPAddr) String() string

type IPConn

IPConn是用于IP网络连接的Conn和PacketConn接口的实现。

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

func DialIP

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

DialIP就像IP网络拨号一样。

网络必须是IP网络名称; 详情请参阅功能表。

如果laddr为零,则自动选择本地地址。如果raddr的IP字段为零或未指定的IP地址,则假定本地系统。

func ListenIP

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

ListenIP就像IP网络的ListenPacket一样。

网络必须是IP网络名称; 详情请参阅功能表。

如果laddr的IP字段为零或未指定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的文件描述符与连接不同。尝试使用此副本更改原件的属性可能会或可能不会产生所需的效果。

func (*IPConn) LocalAddr

func (c *IPConn) LocalAddr() Addr

LocalAddr返回本地网络地址。返回的地址由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

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可用于操作oob中的IP级套接字选项。

func (*IPConn) RemoteAddr

func (c *IPConn) RemoteAddr() Addr

RemoteAddr返回远程网络地址。返回的地址由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

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

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

WriteMsgIP通过c向addr写入消息,从b复制有效载荷和oob的相关带外数据。它返回写入的有效负载和带外字节数。

软件包golang.org/x/net/ipv4和golang.org/x/net/ipv6可用于操作oob中的IP级套接字选项。

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的行为与WriteTo类似,但采用IPAddr。

type IPMask

IP mask是一个IP地址。

type IPMask []byte

func CIDRMask

func CIDRMask(ones, bits int) IPMask

CIDRMask返回由ones' 1 bits followed by 0s up to a total length of比特位组成的IPMask 。对于这种形式的掩码,CIDRMask是IPMask.Size的反转。

例子

package mainimport ("fmt""net")func main() {// 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))}

func IPv4Mask

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

IPv4掩码返回IPv4掩码abcd的IP掩码(4字节形式)

例子

package mainimport ("fmt""net")func main() {
	fmt.Println(net.IPv4Mask(255, 255, 255, 0))}

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

包含报告网络是否包含IP。

func (*IPNet) Network

func (n *IPNet) Network() string

Network返回地址的网络名称,“ip + net”。

func (*IPNet) String

func (n *IPNet) String() string

如RFC 4632和RFC 4291中定义的那样,字符串返回n的CIDR表示法,如“192.0.2.1/24”或“2001:db8 :: / 48”。如果掩码不是规范形式,则返回包含的IP地址,后跟一个斜杠字符和一个以十六进制形式表示的掩码,没有像“198.51.100.1/c000ff00”这样的标点符号。

type 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"
        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返回由index指定的接口。

在Solaris上,它将返回共享逻辑数据链接的逻辑网络接口之一; 为了更精确的使用InterfaceByName。

func InterfaceByName

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

InterfaceByName返回由名称指定的接口。

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 Listener

Listener 是面向流的协议的通用网络监听器。

多个goroutines可以同时调用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}

例子

package mainimport ("io""log""net")func main() {// 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通知本地网络地址。

网络必须是“tcp”,“tcp4”,“tcp6”,“unix”或“unixpacket”。

对于TCP网络,如果地址参数中的主机为空或文字未指定的IP地址,则Listen会监听本地系统的所有可用单播和任播IP地址。要仅使用IPv4,请使用网络“tcp4”。该地址可以使用主机名称,但不建议这样做,因为它将为主机的至多一个IP地址创建一个监听器。如果地址参数中的端口为空或“0”,如“127.0.0.1:”或“:: 1:0”中所示,则会自动选择一个端口号。Listener的Addr方法可用于发现所选端口。

请参阅funcDial以获取网络和地址参数的说明。

type MX

MX代表单个DNS MX记录。

type MX struct {
        Host string
        Pref uint16}

type NS

NS表示单个DNS NS记录。

type NS struct {
        Host string}

type OpError

OpError是通常由网络包中的函数返回的错误类型。它描述了错误的操作,网络类型和地址。

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        // 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.
        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

type PacketConn

PacketConn是一种通用的面向数据包的网络连接。

多个goroutines可以同时调用PacketConn上的方法。

type PacketConn interface {        // ReadFrom reads a packet from the connection,        // copying the payload into b. It returns the number of        // bytes copied into b and the return address that        // was on the packet.        // ReadFrom can be made to time out and return        // an Error with Timeout() == true after a fixed time limit;        // see SetDeadline and SetReadDeadline.        ReadFrom(b []byte) (n int, addr Addr, err error)        // WriteTo writes a packet with payload b to addr.        // WriteTo can be made to time out and return        // an Error with Timeout() == true after a fixed time limit;        // see SetDeadline and SetWriteDeadline.        // On packet-oriented connections, write timeouts are rare.        WriteTo(b []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.        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 with a timeout (see type Error) instead of        // blocking. The deadline applies to all future and pending        // I/O, not just the immediately following call to ReadFrom or        // WriteTo. After a deadline has been exceeded, the connection        // can be refreshed by setting a deadline in the future.        //        // 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在本地网络地址上宣布。

网络必须是“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”中所示,则会自动选择一个端口号。PacketConn的LocalAddr方法可用于发现所选端口。

请参阅func Dial以获取网络和地址参数的说明。

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

type 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        // 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)}

func (*Resolver) LookupAddr

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

LookupAddr对给定地址执行反向查找,返回映射到该地址的名称列表。

func (*Resolver) LookupCNAME

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

LookupCNAME返回给定主机的规范名称。不关心规范名称的调用者可以直接调用LookupHost或LookupIP; 都将照顾解决规范名称作为查找的一部分。

规范名称是跟随零个或多个CNAME记录后的最终名称。只要主机解析为地址记录,则主机不包含DNS“CNAME”记录时,LookupCNAME不会返回错误。

func (*Resolver) LookupHost

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

LookupHost使用本地解析器查找给定的主机。它返回该主机地址的一部分。

func (*Resolver) LookupIPAddr

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

LookupIPAddr使用本地解析器查找主机。它返回该主机的IPv4和IPv6地址的一部分。

func (*Resolver) LookupMX

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

LookupMX返回给定域名的DNS MX记录,并按喜好排序。

func (*Resolver) LookupNS

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

LookupNS返回给定域名的DNS NS记录。

func (*Resolver) LookupPort

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

LookupPort查找给定网络和服务的端口。

func (*Resolver) LookupSRV

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

LookupSRV尝试解析给定服务,协议和域名的SRV查询。原型是“tcp”或“udp”。返回的记录按优先级排序,并按优先级权重随机排序。

LookupSRV根据RFC 2782构建DNS名称以查找。也就是说,它查找_service._proto.name。为了适应以非标准名称发布SRV记录的服务,如果service和proto都是空字符串,LookupSRV将直接查找名称。

func (*Resolver) LookupTXT

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

LookupTXT返回给定域名的DNS TXT记录。

type SRV

SRV代表单个DNS SRV记录。

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

type TCPAddr

TCPAddr表示TCP端点的地址。

type TCPAddr struct {
        IP   IP
        Port int
        Zone string // IPv6 scoped addressing zone}

func ResolveTCPAddr

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

ResolveTCPAddr返回TCP结束点的地址。

网络必须是TCP网络名称。

如果地址参数中的主机不是文字IP地址或端口不是文字端口号,则ResolveTCPAddr将地址解析为TCP端点的地址。否则,它会将该地址解析为一对文字IP地址和端口号。地址参数可以使用主机名称,但不建议这样做,因为它最多只会返回一个主机名称的IP地址。

请参阅func Dial以获取网络和地址参数的说明。

func (*TCPAddr) Network

func (a *TCPAddr) Network() string

网络返回地址的网络名称“tcp”。

func (*TCPAddr) String

func (a *TCPAddr) String() string

type TCPConn

TCPConn是用于TCP网络连接的Conn接口的实现。

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

func DialTCP

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

DialTCP的作用类似于TCP网络的拨号。

网络必须是TCP网络名称; 详情请参阅功能表。

如果laddr为零,则自动选择本地地址。如果raddr的IP字段为零或未指定的IP地址,则假定本地系统。

func (*TCPConn) Close

func (c *TCPConn) Close() error

Close关闭连接。

func (*TCPConn) CloseRead

func (c *TCPConn) CloseRead() error

CloseRead关闭TCP连接的读取端。大多数呼叫者应该只使用关闭。

func (*TCPConn) CloseWrite

func (c *TCPConn) CloseWrite() error

CloseWrite关闭TCP连接的写入端。大多数呼叫者应该只使用关闭。

func (*TCPConn) File

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

File将底层os.File设置为阻止模式并返回副本。完成后关闭f是主叫方的责任。关闭c不会影响f,关闭f不会影响c。

返回的os.File的文件描述符与连接不同。尝试使用此副本更改原件的属性可能会或可能不会产生所需的效果。

func (*TCPConn) LocalAddr

func (c *TCPConn) LocalAddr() Addr

LocalAddr返回本地网络地址。返回的地址由LocalAddr的所有调用共享,所以不要修改它。

func (*TCPConn) Read

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

Read实现Conn Read方法。

func (*TCPConn) ReadFrom

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

ReadFrom实现了io.ReaderFrom ReadFrom方法。

func (*TCPConn) RemoteAddr

func (c *TCPConn) RemoteAddr() Addr

RemoteAddr返回远程网络地址。返回的地址由RemoteAddr的所有调用共享,所以不要修改它。

func (*TCPConn) SetDeadline

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

SetDeadline实现Conn SetDeadline方法。

func (*TCPConn) SetKeepAlive

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

SetKeepAlive设置操作系统是否应该在连接上发送保持活动消息。

func (*TCPConn) SetKeepAlivePeriod

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

SetKeepAlivePeriod设置保持活动之间的时间间隔。

func (*TCPConn) SetLinger

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

SetLinger在仍然有数据等待发送或被确认的连接上设置Close的行为。

如果sec <0(默认值),操作系统将在后台完成数据发送。

如果sec == 0,操作系统会丢弃任何未发送或未确认的数据。

如果sec> 0,则数据在sec <0时在后台发送。在某些操作系统中,经过秒秒后,剩余的未发送数据可能会被丢弃。

func (*TCPConn) SetNoDelay

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

SetNoDelay控制操作系统是否应该延迟数据包传输,希望发送更少的数据包(Nagle的算法)。缺省值为true(无延迟),这意味着在写入数据后尽快发送数据。

func (*TCPConn) SetReadBuffer

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

SetReadBuffer设置与连接关联的操作系统接收缓冲区的大小。

func (*TCPConn) SetReadDeadline

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

SetReadDeadline实现Conn SetReadDeadline方法。

func (*TCPConn) SetWriteBuffer

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

SetWriteBuffer设置与连接关联的操作系统传输缓冲区的大小。

func (*TCPConn) SetWriteDeadline

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

SetWriteDeadline实现Conn SetWriteDeadline方法。

func (*TCPConn) SyscallConn

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

SyscallConn返回一个原始网络连接。这实现了syscall.Conn接口。

func (*TCPConn) Write

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

Write实现了Conn Write方法。

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的作用类似于监听TCP网络。

网络必须是TCP网络名称; 详情请参阅功能表。

如果laddr的IP字段为零或未指定IP地址,则ListenTCP侦听本地系统的所有可用单播和任播IP地址。如果laddr的端口字段为0,则会自动选择一个端口号。

func (*TCPListener) Accept

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

Accept在Listener接口中实现Accept方法; 它等待下一个呼叫并返回一个通用的Conn。

func (*TCPListener) AcceptTCP

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

AcceptTCP接受下一个来电并返回新连接。

func (*TCPListener) Addr

func (l *TCPListener) Addr() Addr

Addr返回侦听器的网络地址,一个* TCPAddr。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的文件描述符与连接不同。尝试使用此副本更改原件的属性可能会或可能不会产生所需的效果。

func (*TCPListener) SetDeadline

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

SetDeadline设置与侦听器关联的截止日期。零时间值禁用截止日期。

type UDPAddr

UDPAddr表示UDP端点的地址。

type UDPAddr struct {
        IP   IP
        Port int
        Zone string // IPv6 scoped addressing zone}

func ResolveUDPAddr

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

ResolveUDPAddr返回UDP端点的地址。

网络必须是UDP网络名称。

如果地址参数中的主机不是文字IP地址或端口不是文字端口号,则ResolveUDPAddr将地址解析为UDP端点的地址。否则,它会将该地址解析为一对文字IP地址和端口号。地址参数可以使用主机名称,但不建议这样做,因为它最多只会返回一个主机名称的IP地址。

请参阅func Dial以获取网络和地址参数的说明。

func (*UDPAddr) Network

func (a *UDPAddr) Network() string

Network返回地址的网络名称“udp”。

func (*UDPAddr) String

func (a *UDPAddr) String() string

type UDPConn

UDPConn是用于UDP网络连接的Conn和PacketConn接口的实现。

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

func DialUDP

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

DialUDP的作用类似于UDP网络的拨号。

网络必须是UDP网络名称; 详情请参阅功能表。

如果laddr为零,则自动选择本地地址。如果raddr的IP字段为零或未指定的IP地址,则假定本地系统。

func ListenMulticastUDP

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

ListenMulticastUDP的作用类似于UDP网络的ListenPacket,但在特定的网络接口上采用组地址。

网络必须是UDP网络名称; 详情请参阅功能表。

ListenMulticastUDP监听本地系统的所有可用IP地址,包括组播组IP地址。如果ifi为零,ListenMulticastUDP使用系统分配的多播接口,但不建议这样做,因为分配取决于平台,有时可能需要路由配置。如果gaddr的端口字段为0,则会自动选择一个端口号。

ListenMulticastUDP只是为了方便简单的小应用程序。有一般用途的golang.org/x/net/ipv4和golang.org/x/net/ipv6软件包。

func ListenUDP

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

ListenUDP就像UDP网络的ListenPacket一样。

网络必须是UDP网络名称; 详情请参阅功能表。

如果laddr的IP字段为零或未指定IP地址,则ListenUDP将侦听本地系统除组播IP地址以外的所有可用IP地址。如果laddr的端口字段为0,则会自动选择一个端口号。

func (*UDPConn) Close

func (c *UDPConn) Close() error

Close关闭连接。

func (*UDPConn) File

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

文件将底层os.File设置为阻止模式并返回副本。完成后关闭f是主叫方的责任。关闭c不会影响f,关闭f不会影响c。

返回的os.File的文件描述符与连接不同。尝试使用此副本更改原件的属性可能会或可能不会产生所需的效果。

func (*UDPConn) LocalAddr

func (c *UDPConn) LocalAddr() Addr

LocalAddr返回本地网络地址。返回的地址由LocalAddr的所有调用共享,所以不要修改它。

func (*UDPConn) Read

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

Read实现Conn Read方法。

func (*UDPConn) ReadFrom

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

ReadFrom实现PacketConn ReadFrom方法。

func (*UDPConn) ReadFromUDP

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

ReadFromUDP的行为类似于ReadFrom,但返回一个UDPAddr。

func (*UDPConn) ReadMsgUDP

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可用于操作oob中的IP级套接字选项。

func (*UDPConn) RemoteAddr

func (c *UDPConn) RemoteAddr() Addr

RemoteAddr返回远程网络地址。返回的地址由RemoteAddr的所有调用共享,所以不要修改它。

func (*UDPConn) SetDeadline

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

SetDeadline实现Conn SetDeadline方法。

func (*UDPConn) SetReadBuffer

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

SetReadBuffer设置与连接关联的操作系统接收缓冲区的大小。

func (*UDPConn) SetReadDeadline

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

SetReadDeadline实现Conn SetReadDeadline方法。

func (*UDPConn) SetWriteBuffer

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

SetWriteBuffer设置与连接关联的操作系统传输缓冲区的大小。

func (*UDPConn) SetWriteDeadline

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

SetWriteDeadline实现Conn SetWriteDeadline方法。

func (*UDPConn) SyscallConn

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

SyscallConn返回一个原始网络连接。这实现了syscall.Conn接口。

func (*UDPConn) Write

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

Write 实现了Conn Write方法。

func (*UDPConn) WriteMsgUDP

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

如果c没有连接,WriteMsgUDP通过c向addr写入消息,如果连接c,则c写入远程地址(在这种情况下,addr必须为零)。有效载荷从b复制,并从oob复制相关的带外数据。它返回写入的有效负载和带外字节数。

软件包golang.org/x/net/ipv4和golang.org/x/net/ipv6可用于操作oob中的IP级套接字选项。

func (*UDPConn) WriteTo

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

WriteTo实现PacketConn WriteTo方法。

func (*UDPConn) WriteToUDP

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

WriteToUDP的行为与WriteTo类似,但需要一个UDPAddr。

type UnixAddr

UnixAddr表示Unix域套接字端点的地址。

type UnixAddr struct {
        Name string
        Net  string}

func ResolveUnixAddr

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

ResolveUnixAddr返回Unix域套接字端点的地址。

网络必须是Unix网络名称。

请参阅func Dial以获取网络和地址参数的说明。

func (*UnixAddr) Network

func (a *UnixAddr) Network() string

Network返回地址的网络名称,“unix”,“unixgram”或“unixpacket”。

func (*UnixAddr) String

func (a *UnixAddr) String() string

type UnixConn

UnixConn是用于连接到Unix域套接字的Conn接口的实现。

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

func DialUnix

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

DialUnix的行为就像拨号Unix网络。

network必须是Unix网络名称; 详情请参阅功能表。

如果laddr非零,则将其用作连接的本地地址。

func ListenUnixgram

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

ListenUnixgram的作用类似于Unix网络的ListenPacket。

网络必须是“unixgram”。

func (*UnixConn) Close

func (c *UnixConn) Close() error

Close 关闭连接。

func (*UnixConn) CloseRead

func (c *UnixConn) CloseRead() error

CloseRead关闭Unix域连接的读取端。大多数呼叫者应该只使用关闭。

func (*UnixConn) CloseWrite

func (c *UnixConn) CloseWrite() error

CloseWrite关闭了Unix域连接的写入端。大多数呼叫者应该只使用关闭。

func (*UnixConn) File

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

File将底层os.File设置为阻止模式并返回副本。完成后关闭f是主叫方的责任。关闭c不会影响f,关闭f不会影响c。

返回的os.File的文件描述符与连接不同。尝试使用此副本更改原件的属性可能会或可能不会产生所需的效果。

func (*UnixConn) LocalAddr

func (c *UnixConn) LocalAddr() Addr

LocalAddr返回本地网络地址。返回的地址由LocalAddr的所有调用共享,所以不要修改它。

func (*UnixConn) Read

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

Read实现Conn Read方法。

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的行为像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返回远程网络地址。返回的地址由RemoteAddr的所有调用共享,所以不要修改它。

func (*UnixConn) SetDeadline

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

SetDeadline实现Conn SetDeadline方法。

func (*UnixConn) SetReadBuffer

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

SetReadBuffer设置与连接关联的操作系统接收缓冲区的大小。

func (*UnixConn) SetReadDeadline

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

SetReadDeadline实现Conn SetReadDeadline方法。

func (*UnixConn) SetWriteBuffer

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

SetWriteBuffer设置与连接关联的操作系统传输缓冲区的大小。

func (*UnixConn) SetWriteDeadline

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

SetWriteDeadline实现Conn SetWriteDeadline方法。

func (*UnixConn) SyscallConn

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

SyscallConn返回一个原始网络连接。这实现了syscall.Conn接口。

func (*UnixConn) Write

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

Write实现了Conn Write方法。

func (*UnixConn) WriteMsgUnix

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

WriteMsgUnix通过c向addr写入消息,从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与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 for Unix网络一样。

网络必须是“unix”或“unixpacket”。

func (*UnixListener) Accept

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

Accept在Listener接口中实现Accept方法。返回的连接将是* UnixConn类型。

func (*UnixListener) AcceptUnix

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

AcceptUnix接受下一个来电并返回新连接。

func (*UnixListener) Addr

func (l *UnixListener) 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的文件描述符与连接不同。尝试使用此副本更改原件的属性可能会或可能不会产生所需的效果。

func (*UnixListener) SetDeadline

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

SetDeadline设置与侦听器关联的截止日期。零时间值禁用截止日期。

func (*UnixListener) SetUnlinkOnClose

func (l *UnixListener) SetUnlinkOnClose(unlink bool)

SetUnlinkOnClose设置当侦听器关闭时是否应从文件系统中删除底层套接字文件。

默认行为是只有在package net创建套接字文件时才能解除套接字文件的链接。也就是说,当侦听器和底层套接字文件是通过调用Listen或ListenUnix创建的,那么默认关闭侦听器将删除套接字文件。但是如果侦听器是通过调用FileListener创建的,以使用已经存在的套接字文件,那么默认情况下,关闭侦听器将不会删除套接字文件。

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

错误

  • ☞   在NaCl和Windows上,FileConn,FileListener和FilePacketConn函数未实现。

  • ☞   关于NaCl,与接口相关的方法和功能未实现。

  • ☞   在DragonFly BSD,NetBSD,OpenBSD,Plan 9和Solaris上,Interface的MulticastAddrs方法未实现。

  • ☞   在每个POSIX平台上,即使有可用空间,使用ReadFrom或ReadFromIP方法从“ip4”网络读取也可能不会返回完整的IPv4数据包,包括其头文件。即使在Read或ReadMsgIP可能返回完整数据包的情况下也可能发生这种情况。出于这个原因,如果接收完整数据包很重要,建议您不要使用这些方法。

Go 1兼容性准则使我们无法改变这些方法的行为; 改为使用Read或ReadMsgIP。

  • ☞   在NaCl,Plan 9和Windows上,IPConn的ReadMsgIP和WriteMsgIP方法未实现。

  • ☞   在Windows上,IPConn的File方法未实现。

  • ☞   在DragonFly BSD和OpenBSD上,侦听“tcp”和“udp”网络不会侦听IPv4和IPv6连接。这是因为IPv4流量不会路由到IPv6套接字 - 如果要支持两个地址系列,则需要两个单独的套接字。详情请参阅inet6(4)。

  • ☞   在Windows上,不执行syscall.RawConn的读写方法。

  • ☞   在NaCl和Plan 9中,syscall.RawConn的控制,读取和写入方法未实现。

  • ☞   在Windows上,TCPListener的File方法未实现。

  • ☞   在NaCl,Plan 9和Windows中,UDPConn的ReadMsgUDP和WriteMsgUDP方法未实现。

  • ☞   在Windows上,UDPConn的File方法未实现。

  • ☞   在NaCl上,ListenMulticastUDP功能未实现。

子目录

Name

Synopsis

http

包http提供HTTP客户端和服务器实现。

cgi

包cgi实现了RFC 3875中规定的CGI(通用网关接口)

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

包邮件实现邮件消息的解析。

rpc

软件包rpc通过网络或其他I/O连接提供对对象的导出方法的访问。

jsonrpc

包jsonrpc为rpc包实现了一个JSON-RPC 1.0 ClientCodec和ServerCodec。

smtp

包smtp实现了RFC 5321中定义的简单邮件传输协议

textproto

Package textproto以HTTP,NNTP和SMTP的风格实现对基于文本的请求/响应协议的通用支持。

url

包url解析URL并实现查询转义。

上一篇: 下一篇: