首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

net

  • import "net"
  • 概述
  • 索引
  • 示例
  • 子目录

概述

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

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

拨号功能连接到服务器:

代码语言:javascript
复制
conn, err := net.Dial("tcp", "golang.org:80")
if err != nil {
	// 处理错误
}
fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n")
status, err := bufio.NewReader(conn).ReadString('\n')
// ...

Listen函数创建服务器:

代码语言:javascript
复制
ln, err := net.Listen("tcp", ":8080")
if err != nil {
	// 处理错误		
}
for {
	conn, err := ln.Accept()
	if err != nil {
		// 处理错误
	}
	go handleConnection(conn)
}

名称解析

解析域名的方法,不管是间接使用像 Dial 这样的函数,还是直接使用 LookupHost 和 LookupAddr 等函数,都会因操作系统而异。

在 Unix 系统上,解析器有两个解析名称的选项。它可以使用纯粹的 Go 解析器将 DNS 请求直接发送到 /etc/resolv.conf 中列出的服务器,或者可以使用调用C库例程(如 getaddrinfo 和 getnameinfo)的基于 cgo 的解析器。

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

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

代码语言:javascript
复制
export GODEBUG=netdns=go    # force pure Go resolver
export 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
代码语言:js
复制
sdf
  • 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

包文件

常量

IP地址长度(字节)。

代码语言:javascript
复制
const (
        IPv4len = 4
        IPv6len = 16
)

变量

众所周知的IPv4地址

代码语言:javascript
复制
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地址

代码语言:javascript
复制
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没有指定的解析器。

代码语言:javascript
复制
var DefaultResolver = &Resolver{}

OpError中包含各种错误。

代码语言:javascript
复制
var (
        ErrWriteToConnected = errors.New("use of WriteTo with pre-connected connection")
)

func InterfaceAddrs(显示源代码)

代码语言:javascript
复制
func InterfaceAddrs() ([]Addr, error)

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

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

func Interfaces(显示源文件)

代码语言:javascript
复制
func Interfaces() ([]Interface, error)

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

func JoinHostPort(显示源文件)

代码语言:javascript
复制
func JoinHostPort(host, port string) string

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

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

func LookupAddr(显示源文件)

代码语言:javascript
复制
func LookupAddr(addr string) (names []string, err error)

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

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

func LookupCNAME(显示源文件)

代码语言:javascript
复制
func LookupCNAME(host string) (cname string, err error)

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

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

func LookupHost(显示源文件)

代码语言:javascript
复制
func LookupHost(host string) (addrs []string, err error)

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

代码语言:javascript
复制
func LookupIP(host string) ([]IP, error)

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

代码语言:javascript
复制
func LookupMX(name string) ([]*MX, error)

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

代码语言:javascript
复制
func LookupNS(name string) ([]*NS, error)

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

func LookupPort(显示源文件)

代码语言:javascript
复制
func LookupPort(network, service string) (port int, err error)

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

func LookupSRV(显示源文件)

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func LookupTXT(name string) ([]string, error)

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

func SplitHostPort(显示源文件)

代码语言:javascript
复制
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。

Addr表示网络终点地址。

Network和String这两种方法通常返回可以作为参数传递给Dial的字符串,但字符串的确切形式和含义取决于实现。

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
type AddrError struct {
        Err  string
        Addr string
}

func (*AddrError) Error(显示源文件)

代码语言:javascript
复制
func (e *AddrError) Error() string

func (*AddrError) Temporary(显示源文件)

代码语言:javascript
复制
func (e *AddrError) Temporary() bool

func (*AddrError) Timeout(显示源文件)

代码语言:javascript
复制
func (e *AddrError) Timeout() bool

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

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

代码语言:javascript
复制
type Buffers [][]byte

func (*Buffers) Read(显示源文件)

代码语言:javascript
复制
func (v *Buffers) Read(p []byte) (n int, err error)

func (*Buffers) WriteTo(显示源文件)

代码语言:javascript
复制
func (v *Buffers) WriteTo(w io.Writer) (n int64, err error)

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

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

代码语言:javascript
复制
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
}
代码语言:javascript
复制
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地址,直到成功为止。

例子:

代码语言:javascript
复制
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”。

例子:

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func DialTimeout(network, address string, timeout time.Duration) (Conn, error)

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

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

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

代码语言:javascript
复制
func FileConn(f *os.File) (c Conn, err error)

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

代码语言:javascript
复制
func Pipe() (Conn, Conn)

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

type DNSConfigError(显示源文件)

DNSConfigError表示读取机器的DNS配置时发生错误。(不再使用;保持兼容性。)

代码语言:javascript
复制
type DNSConfigError struct {
        Err error
}

func (*DNSConfigError) Error(显示源文件)

代码语言:javascript
复制
func (e *DNSConfigError) Error() string

func (*DNSConfigError) Temporary(显示源文件)

代码语言:javascript
复制
func (e *DNSConfigError) Temporary() bool

func (*DNSConfigError) Timeout(显示源文件)

代码语言:javascript
复制
func (e *DNSConfigError) Timeout() bool

DNSError代表DNS查找错误。

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (e *DNSError) Error() string

func (*DNSError) Temporary(显示源文件)

代码语言:javascript
复制
func (e *DNSError) Temporary() bool

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

func (*DNSError) Timeout(显示源文件)

代码语言:javascript
复制
func (e *DNSError) Timeout() bool

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

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

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

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (d *Dialer) Dial(network, address string) (Conn, error)

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

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

func (*Dialer) DialContext(显示源文件)

代码语言:javascript
复制
func (d *Dialer) DialContext(ctx context.Context, network, address string) (Conn, error)

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

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

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

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

Error代表网络错误。

代码语言:javascript
复制
type Error interface {
        error
        Timeout() bool   // Is the error a timeout?
        Temporary() bool // Is the error temporary?
}
代码语言:javascript
复制
type Flags uint
代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (f Flags) String() string

type HardwareAddr(显示源文件)

HardwareAddr表示物理硬件地址。

代码语言:javascript
复制
type HardwareAddr []byte
代码语言:javascript
复制
func ParseMAC(s string) (hw HardwareAddr, err error)

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

代码语言:javascript
复制
01:23:45:67:89:ab
01:23:45:67:89:ab:cd:ef
01:23:45:67:89:ab:cd:ef:00:00:01:23:45:67:89:ab:cd:ef:00:00
01-23-45-67-89-ab
01-23-45-67-89-ab-cd-ef
01-23-45-67-89-ab-cd-ef-00-00-01-23-45-67-89-ab-cd-ef-00-00
0123.4567.89ab
0123.4567.89ab.cdef
0123.4567.89ab.cdef.0000.0123.4567.89ab.cdef.0000

func (HardwareAddr) String(显示源文件)

代码语言:javascript
复制
func (a HardwareAddr) String() string

IP是单个IP??地址,即一个字节片段。该软件包中的函数接受4字节(IPv4)或16字节(IPv6)切片作为输入。

请注意,在本文档中,将IP地址称为IPv4地址或IPv6地址是地址的语义属性,而不仅仅是字节片的长度:16字节的片仍然可以是IPv4地址。

代码语言:javascript
复制
type IP []byte
代码语言:javascript
复制
func IPv4(a, b, c, d byte) IP

IPv4返回IPv4地址abcd的IP地址(16字节形式)

例子

代码语言:javascript
复制
package main

import (
	"fmt"
	"net"
)

func main() {
	fmt.Println(net.IPv4(8, 8, 8, 8))

}

func ParseCIDR(显示源文件)

代码语言:javascript
复制
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。

例子

代码语言:javascript
复制
package main

import (
	"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)

}
代码语言:javascript
复制
func ParseIP(s string) IP

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

例子

代码语言:javascript
复制
package main

import (
	"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(显示源文件)

代码语言:javascript
复制
func (ip IP) DefaultMask() IPMask

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

例子

代码语言:javascript
复制
package main

import (
	"fmt"
	"net"
)

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

}

func (IP) Equal(显示源文件)

代码语言:javascript
复制
func (ip IP) Equal(x IP) bool

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

func (IP) IsGlobalUnicast(显示源文件)

代码语言:javascript
复制
func (ip IP) IsGlobalUnicast() bool

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

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

func (IP) IsInterfaceLocalMulticast(显示源文件)

代码语言:javascript
复制
func (ip IP) IsInterfaceLocalMulticast() bool

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

func (IP) IsLinkLocalMulticast(显示源文件)

代码语言:javascript
复制
func (ip IP) IsLinkLocalMulticast() bool

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

func (IP) IsLinkLocalUnicast(显示源文件)

代码语言:javascript
复制
func (ip IP) IsLinkLocalUnicast() bool

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

func (IP) IsLoopback(显示源文件)

代码语言:javascript
复制
func (ip IP) IsLoopback() bool

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

func (IP) IsMulticast(显示源文件)

代码语言:javascript
复制
func (ip IP) IsMulticast() bool

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

func (IP) IsUnspecified(显示源文件)

代码语言:javascript
复制
func (ip IP) IsUnspecified() bool

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

func (IP) MarshalText(显示源文件)

代码语言:javascript
复制
func (ip IP) MarshalText() ([]byte, error)

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

func (IP) Mask(显示源文件)

代码语言:javascript
复制
func (ip IP) Mask(mask IPMask) IP

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

例子

代码语言:javascript
复制
package main

import (
	"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(显示源文件)

代码语言:javascript
复制
func (ip IP) String() string

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

代码语言:javascript
复制
- "<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(显示源文件)

代码语言:javascript
复制
func (ip IP) To16() IP

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

代码语言:javascript
复制
func (ip IP) To4() IP

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

func (*IP) UnmarshalText(显示源文件)

代码语言:javascript
复制
func (ip *IP) UnmarshalText(text []byte) error

UnmarshalText实现了encoding.TextUnmarshaler接口。IP地址预计采用ParseIP接受的形式。

IPAddr表示IP终点的地址。

代码语言:javascript
复制
type IPAddr struct {
        IP   IP
        Zone string // IPv6 scoped addressing zone
}

func ResolveIPAddr(显示源文件)

代码语言:javascript
复制
func ResolveIPAddr(network, address string) (*IPAddr, error)

ResolveIPAddr返回IP结束点的地址。

网络必须是IP网络名称。

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

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

func (*IPAddr) Network(显示源文件)

代码语言:javascript
复制
func (a *IPAddr) Network() string

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

func (*IPAddr) String(显示源文件)

代码语言:javascript
复制
func (a *IPAddr) String() string

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

代码语言:javascript
复制
type IPConn struct {
        // contains filtered or unexported fields
}
代码语言:javascript
复制
func DialIP(network string, laddr, raddr *IPAddr) (*IPConn, error)

DialIP就像IP网络拨号一样。

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

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

代码语言:javascript
复制
func ListenIP(network string, laddr *IPAddr) (*IPConn, error)

ListenIP就像IP网络的ListenPacket一样。

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

如果laddr的IP字段为零或未指定IP地址,则ListenIP侦听本地系统的所有可用IP地址(组播IP地址除外)。

func (*IPConn) Close(显示源文件)

代码语言:javascript
复制
func (c *IPConn) Close() error

Close关闭连接。

func (*IPConn) File(显示源文件)

代码语言:javascript
复制
func (c *IPConn) File() (f *os.File, err error)

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

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

func (*IPConn) LocalAddr(显示源文件)

代码语言:javascript
复制
func (c *IPConn) LocalAddr() Addr

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

func (*IPConn) Read(显示源文件)

代码语言:javascript
复制
func (c *IPConn) Read(b []byte) (int, error)

Read实现Conn Read方法。

func (*IPConn) ReadFrom(显示源文件)

代码语言:javascript
复制
func (c *IPConn) ReadFrom(b []byte) (int, Addr, error)

ReadFrom实现PacketConn ReadFrom方法。

func (*IPConn) ReadFromIP(显示源文件)

代码语言:javascript
复制
func (c *IPConn) ReadFromIP(b []byte) (int, *IPAddr, error)

ReadFromIP的作用类似于ReadFrom,但返回一个IPAddr。

func (*IPConn) ReadMsgIP(显示源文件)

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (c *IPConn) RemoteAddr() Addr

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

func (*IPConn) SetDeadline(显示源文件)

代码语言:javascript
复制
func (c *IPConn) SetDeadline(t time.Time) error

SetDeadline实现Conn SetDeadline方法。

func (*IPConn) SetReadBuffer(显示源文件)

代码语言:javascript
复制
func (c *IPConn) SetReadBuffer(bytes int) error

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

func (*IPConn) SetReadDeadline(显示源文件)

代码语言:javascript
复制
func (c *IPConn) SetReadDeadline(t time.Time) error

SetReadDeadline实现Conn SetReadDeadline方法。

func (*IPConn) SetWriteBuffer(显示源文件)

代码语言:javascript
复制
func (c *IPConn) SetWriteBuffer(bytes int) error

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

func (*IPConn) SetWriteDeadline(显示源文件)

代码语言:javascript
复制
func (c *IPConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline实现Conn SetWriteDeadline方法。

func (*IPConn) SyscallConn(显示源文件)

代码语言:javascript
复制
func (c *IPConn) SyscallConn() (syscall.RawConn, error)

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

func (*IPConn) Write(显示源文件)

代码语言:javascript
复制
func (c *IPConn) Write(b []byte) (int, error)

Write实现了Conn Write方法。

func (*IPConn) WriteMsgIP(显示源文件)

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (c *IPConn) WriteTo(b []byte, addr Addr) (int, error)

WriteTo实现PacketConn WriteTo方法。

func (*IPConn) WriteToIP(显示源文件)

代码语言:javascript
复制
func (c *IPConn) WriteToIP(b []byte, addr *IPAddr) (int, error)

WriteToIP的行为与WriteTo类似,但采用IPAddr。

IP mask是一个IP地址。

代码语言:javascript
复制
type IPMask []byte
代码语言:javascript
复制
func CIDRMask(ones, bits int) IPMask

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

例子

代码语言:javascript
复制
package main

import (
	"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))

}
代码语言:javascript
复制
func IPv4Mask(a, b, c, d byte) IPMask

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

例子

代码语言:javascript
复制
package main

import (
	"fmt"
	"net"
)

func main() {
	fmt.Println(net.IPv4Mask(255, 255, 255, 0))

}

func (IPMask) Size(显示源文件)

代码语言:javascript
复制
func (m IPMask) Size() (ones, bits int)

Size返回掩码中的前导数和总位数。如果掩码不是规范形式 - 其后是零,则Size返回0,0。

func (IPMask) String(显示源文件)

代码语言:javascript
复制
func (m IPMask) String() string

String返回m的十六进制形式,没有标点符号。

IPNet代表一个IP网络。

代码语言:javascript
复制
type IPNet struct {
        IP   IP     // network number
        Mask IPMask // network mask
}

func (*IPNet) Contains(显示源文件)

代码语言:javascript
复制
func (n *IPNet) Contains(ip IP) bool

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

func (*IPNet) Network(显示源文件)

代码语言:javascript
复制
func (n *IPNet) Network() string

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

func (*IPNet) String(显示源文件)

代码语言:javascript
复制
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(显示源文件)

接口表示网络接口名称和索引之间的映射。它也代表网络接口设施信息。

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func InterfaceByIndex(index int) (*Interface, error)

InterfaceByIndex返回由index指定的接口。

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

func InterfaceByName(显示源文件)

代码语言:javascript
复制
func InterfaceByName(name string) (*Interface, error)

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

func (*Interface) Addrs(显示源文件)

代码语言:javascript
复制
func (ifi *Interface) Addrs() ([]Addr, error)

Addrs返回特定接口的单播接口地址列表。

func (*Interface) MulticastAddrs(显示源文件)

代码语言:javascript
复制
func (ifi *Interface) MulticastAddrs() ([]Addr, error)

MulticastAddrs返回一个特定接口的多播,加入组地址列表。

type InvalidAddrError(显示源文件)

代码语言:javascript
复制
type InvalidAddrError string

func (InvalidAddrError) Error(显示源文件)

代码语言:javascript
复制
func (e InvalidAddrError) Error() string

func (InvalidAddrError) Temporary(显示源文件)

代码语言:javascript
复制
func (e InvalidAddrError) Temporary() bool

func (InvalidAddrError) Timeout(显示源文件)

代码语言:javascript
复制
func (e InvalidAddrError) Timeout() bool

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

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

代码语言:javascript
复制
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
}

例子

代码语言:javascript
复制
package main

import (
	"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(显示源文件)

代码语言:javascript
复制
func FileListener(f *os.File) (ln Listener, err error)

FileListener返回与打开文件f相对应的网络监听器的副本。在完成后关闭ln是来电者的责任。关闭ln不会影响f,关闭f不会影响ln。

代码语言:javascript
复制
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以获取网络和地址参数的说明。

MX代表单个DNS MX记录。

代码语言:javascript
复制
type MX struct {
        Host string
        Pref uint16
}

NS表示单个DNS NS记录。

代码语言:javascript
复制
type NS struct {
        Host string
}

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

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (e *OpError) Error() string

func (*OpError) Temporary(显示源文件)

代码语言:javascript
复制
func (e *OpError) Temporary() bool

func (*OpError) Timeout(显示源文件)

代码语言:javascript
复制
func (e *OpError) Timeout() bool

type PacketConn(显示源文件)

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

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

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func FilePacketConn(f *os.File) (c PacketConn, err error)

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

func ListenPacket(显示源文件)

代码语言:javascript
复制
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是文字网络地址解析器的错误类型。

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (e *ParseError) Error() string

Resolver查找名称和数字。

无*解析器相当于零解析器。

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (r *Resolver) LookupAddr(ctx context.Context, addr string) (names []string, err error)

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

func (*Resolver) LookupCNAME(显示源文件)

代码语言:javascript
复制
func (r *Resolver) LookupCNAME(ctx context.Context, host string) (cname string, err error)

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

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

func (*Resolver) LookupHost(显示源文件)

代码语言:javascript
复制
func (r *Resolver) LookupHost(ctx context.Context, host string) (addrs []string, err error)

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

func (*Resolver) LookupIPAddr(显示源文件)

代码语言:javascript
复制
func (r *Resolver) LookupIPAddr(ctx context.Context, host string) ([]IPAddr, error)

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

func (*Resolver) LookupMX(显示源文件)

代码语言:javascript
复制
func (r *Resolver) LookupMX(ctx context.Context, name string) ([]*MX, error)

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

func (*Resolver) LookupNS(显示源文件)

代码语言:javascript
复制
func (r *Resolver) LookupNS(ctx context.Context, name string) ([]*NS, error)

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

func (*Resolver) LookupPort(显示源文件)

代码语言:javascript
复制
func (r *Resolver) LookupPort(ctx context.Context, network, service string) (port int, err error)

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

func (*Resolver) LookupSRV(显示源文件)

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (r *Resolver) LookupTXT(ctx context.Context, name string) ([]string, error)

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

SRV代表单个DNS SRV记录。

代码语言:javascript
复制
type SRV struct {
        Target   string
        Port     uint16
        Priority uint16
        Weight   uint16
}

TCPAddr表示TCP端点的地址。

代码语言:javascript
复制
type TCPAddr struct {
        IP   IP
        Port int
        Zone string // IPv6 scoped addressing zone
}

func ResolveTCPAddr(显示源文件)

代码语言:javascript
复制
func ResolveTCPAddr(network, address string) (*TCPAddr, error)

ResolveTCPAddr返回TCP结束点的地址。

网络必须是TCP网络名称。

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

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

func (*TCPAddr) Network(显示源文件)

代码语言:javascript
复制
func (a *TCPAddr) Network() string

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

func (*TCPAddr) String(显示源文件)

代码语言:javascript
复制
func (a *TCPAddr) String() string

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

代码语言:javascript
复制
type TCPConn struct {
        // contains filtered or unexported fields
}
代码语言:javascript
复制
func DialTCP(network string, laddr, raddr *TCPAddr) (*TCPConn, error)

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

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

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

func (*TCPConn) Close(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) Close() error

Close关闭连接。

func (*TCPConn) CloseRead(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) CloseRead() error

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

func (*TCPConn) CloseWrite(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) CloseWrite() error

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

func (*TCPConn) File(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) File() (f *os.File, err error)

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

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

func (*TCPConn) LocalAddr(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) LocalAddr() Addr

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

func (*TCPConn) Read(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) Read(b []byte) (int, error)

Read实现Conn Read方法。

func (*TCPConn) ReadFrom(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) ReadFrom(r io.Reader) (int64, error)

ReadFrom实现了io.ReaderFrom ReadFrom方法。

func (*TCPConn) RemoteAddr(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) RemoteAddr() Addr

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

func (*TCPConn) SetDeadline(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) SetDeadline(t time.Time) error

SetDeadline实现Conn SetDeadline方法。

func (*TCPConn) SetKeepAlive(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) SetKeepAlive(keepalive bool) error

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

func (*TCPConn) SetKeepAlivePeriod(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) SetKeepAlivePeriod(d time.Duration) error

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

func (*TCPConn) SetLinger(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) SetLinger(sec int) error

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

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

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

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

func (*TCPConn) SetNoDelay(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) SetNoDelay(noDelay bool) error

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

func (*TCPConn) SetReadBuffer(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) SetReadBuffer(bytes int) error

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

func (*TCPConn) SetReadDeadline(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) SetReadDeadline(t time.Time) error

SetReadDeadline实现Conn SetReadDeadline方法。

func (*TCPConn) SetWriteBuffer(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) SetWriteBuffer(bytes int) error

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

func (*TCPConn) SetWriteDeadline(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline实现Conn SetWriteDeadline方法。

func (*TCPConn) SyscallConn(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) SyscallConn() (syscall.RawConn, error)

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

func (*TCPConn) Write(显示源文件)

代码语言:javascript
复制
func (c *TCPConn) Write(b []byte) (int, error)

Write实现了Conn Write方法。

type TCPListener(显示源文件)

TCPListener是一个TCP网络监听器。客户端通常应该使用Listener类型的变量,而不是假设TCP。

代码语言:javascript
复制
type TCPListener struct {
        // contains filtered or unexported fields
}

func ListenTCP(显示源文件)

代码语言:javascript
复制
func ListenTCP(network string, laddr *TCPAddr) (*TCPListener, error)

ListenTCP的作用类似于监听TCP网络。

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

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

func (*TCPListener) Accept(显示源文件)

代码语言:javascript
复制
func (l *TCPListener) Accept() (Conn, error)

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

func (*TCPListener) AcceptTCP(显示源文件)

代码语言:javascript
复制
func (l *TCPListener) AcceptTCP() (*TCPConn, error)

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

func (*TCPListener) Addr(显示源文件)

代码语言:javascript
复制
func (l *TCPListener) Addr() Addr

Addr返回侦听器的网络地址,一个* TCPAddr。Addr返回的所有调用共享,所以不要修改它。

func (*TCPListener) Close(显示源文件)

代码语言:javascript
复制
func (l *TCPListener) Close() error

Close停止侦听TCP地址。已接受的连接未关闭。

func (*TCPListener) File(显示源文件)

代码语言:javascript
复制
func (l *TCPListener) File() (f *os.File, err error)

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

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

func (*TCPListener) SetDeadline(显示源文件)

代码语言:javascript
复制
func (l *TCPListener) SetDeadline(t time.Time) error

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

UDPAddr表示UDP端点的地址。

代码语言:javascript
复制
type UDPAddr struct {
        IP   IP
        Port int
        Zone string // IPv6 scoped addressing zone
}

func ResolveUDPAddr(显示源文件)

代码语言:javascript
复制
func ResolveUDPAddr(network, address string) (*UDPAddr, error)

ResolveUDPAddr返回UDP端点的地址。

网络必须是UDP网络名称。

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

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

func (*UDPAddr) Network(显示源文件)

代码语言:javascript
复制
func (a *UDPAddr) Network() string

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

func (*UDPAddr) String(显示源文件)

代码语言:javascript
复制
func (a *UDPAddr) String() string

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

代码语言:javascript
复制
type UDPConn struct {
        // contains filtered or unexported fields
}
代码语言:javascript
复制
func DialUDP(network string, laddr, raddr *UDPAddr) (*UDPConn, error)

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

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

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

func ListenMulticastUDP(显示源文件)

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func ListenUDP(network string, laddr *UDPAddr) (*UDPConn, error)

ListenUDP就像UDP网络的ListenPacket一样。

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

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

func (*UDPConn) Close(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) Close() error

Close关闭连接。

func (*UDPConn) File(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) File() (f *os.File, err error)

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

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

func (*UDPConn) LocalAddr(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) LocalAddr() Addr

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

func (*UDPConn) Read(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) Read(b []byte) (int, error)

Read实现Conn Read方法。

func (*UDPConn) ReadFrom(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) ReadFrom(b []byte) (int, Addr, error)

ReadFrom实现PacketConn ReadFrom方法。

func (*UDPConn) ReadFromUDP(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) ReadFromUDP(b []byte) (int, *UDPAddr, error)

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

func (*UDPConn) ReadMsgUDP(显示源文件)

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) RemoteAddr() Addr

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

func (*UDPConn) SetDeadline(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) SetDeadline(t time.Time) error

SetDeadline实现Conn SetDeadline方法。

func (*UDPConn) SetReadBuffer(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) SetReadBuffer(bytes int) error

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

func (*UDPConn) SetReadDeadline(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) SetReadDeadline(t time.Time) error

SetReadDeadline实现Conn SetReadDeadline方法。

func (*UDPConn) SetWriteBuffer(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) SetWriteBuffer(bytes int) error

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

func (*UDPConn) SetWriteDeadline(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline实现Conn SetWriteDeadline方法。

func (*UDPConn) SyscallConn(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) SyscallConn() (syscall.RawConn, error)

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

func (*UDPConn) Write(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) Write(b []byte) (int, error)

Write 实现了Conn Write方法。

func (*UDPConn) WriteMsgUDP(显示源文件)

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) WriteTo(b []byte, addr Addr) (int, error)

WriteTo实现PacketConn WriteTo方法。

func (*UDPConn) WriteToUDP(显示源文件)

代码语言:javascript
复制
func (c *UDPConn) WriteToUDP(b []byte, addr *UDPAddr) (int, error)

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

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

代码语言:javascript
复制
type UnixAddr struct {
        Name string
        Net  string
}

func ResolveUnixAddr(显示源文件)

代码语言:javascript
复制
func ResolveUnixAddr(network, address string) (*UnixAddr, error)

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

网络必须是Unix网络名称。

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

func (*UnixAddr) Network(显示源文件)

代码语言:javascript
复制
func (a *UnixAddr) Network() string

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

func (*UnixAddr) String(显示源文件)

代码语言:javascript
复制
func (a *UnixAddr) String() string

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

代码语言:javascript
复制
type UnixConn struct {
        // contains filtered or unexported fields
}
代码语言:javascript
复制
func DialUnix(network string, laddr, raddr *UnixAddr) (*UnixConn, error)

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

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

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

func ListenUnixgram(显示源文件)

代码语言:javascript
复制
func ListenUnixgram(network string, laddr *UnixAddr) (*UnixConn, error)

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

网络必须是“unixgram”。

func (*UnixConn) Close(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) Close() error

Close 关闭连接。

func (*UnixConn) CloseRead(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) CloseRead() error

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

func (*UnixConn) CloseWrite(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) CloseWrite() error

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

func (*UnixConn) File(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) File() (f *os.File, err error)

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

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

func (*UnixConn) LocalAddr(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) LocalAddr() Addr

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

func (*UnixConn) Read(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) Read(b []byte) (int, error)

Read实现Conn Read方法。

func (*UnixConn) ReadFrom(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) ReadFrom(b []byte) (int, Addr, error)

ReadFrom实现PacketConn ReadFrom方法。

func (*UnixConn) ReadFromUnix(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) ReadFromUnix(b []byte) (int, *UnixAddr, error)

ReadFromUnix的行为像ReadFrom,但返回一个UnixAddr。

func (*UnixConn) ReadMsgUnix(显示源文件)

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) RemoteAddr() Addr

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

func (*UnixConn) SetDeadline(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) SetDeadline(t time.Time) error

SetDeadline实现Conn SetDeadline方法。

func (*UnixConn) SetReadBuffer(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) SetReadBuffer(bytes int) error

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

func (*UnixConn) SetReadDeadline(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) SetReadDeadline(t time.Time) error

SetReadDeadline实现Conn SetReadDeadline方法。

func (*UnixConn) SetWriteBuffer(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) SetWriteBuffer(bytes int) error

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

func (*UnixConn) SetWriteDeadline(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline实现Conn SetWriteDeadline方法。

func (*UnixConn) SyscallConn(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) SyscallConn() (syscall.RawConn, error)

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

func (*UnixConn) Write(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) Write(b []byte) (int, error)

Write实现了Conn Write方法。

func (*UnixConn) WriteMsgUnix(显示源文件)

代码语言:javascript
复制
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(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) WriteTo(b []byte, addr Addr) (int, error)

WriteTo实现PacketConn WriteTo方法。

func (*UnixConn) WriteToUnix(显示源文件)

代码语言:javascript
复制
func (c *UnixConn) WriteToUnix(b []byte, addr *UnixAddr) (int, error)

WriteToUnix与WriteTo类似,但需要一个UnixAddr。

type UnixListener(显示源文件)

UnixListener是一个Unix域套接字监听器。客户端通常应该使用Listener类型的变量,而不是假设Unix域套接字。

代码语言:javascript
复制
type UnixListener struct {
        // contains filtered or unexported fields
}

func ListenUnix(显示源文件)

代码语言:javascript
复制
func ListenUnix(network string, laddr *UnixAddr) (*UnixListener, error)

ListenUnix就像Listen for Unix网络一样。

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

func (*UnixListener) Accept(显示源文件)

代码语言:javascript
复制
func (l *UnixListener) Accept() (Conn, error)

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

func (*UnixListener) AcceptUnix(显示源文件)

代码语言:javascript
复制
func (l *UnixListener) AcceptUnix() (*UnixConn, error)

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

func (*UnixListener) Addr(显示源文件)

代码语言:javascript
复制
func (l *UnixListener) Addr() Addr

Addr返回侦听器的网络地址。Addr返回的所有调用共享,所以不要修改它。

func (*UnixListener) Close(显示源文件)

代码语言:javascript
复制
func (l *UnixListener) Close() error

Close停止监听Unix地址。已接受的连接未关闭。

func (*UnixListener) File(显示源文件)

代码语言:javascript
复制
func (l *UnixListener) File() (f *os.File, err error)

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

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

func (*UnixListener) SetDeadline(显示源文件)

代码语言:javascript
复制
func (l *UnixListener) SetDeadline(t time.Time) error

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

func (*UnixListener) SetUnlinkOnClose(显示源文件)

代码语言:javascript
复制
func (l *UnixListener) SetUnlinkOnClose(unlink bool)

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

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

type UnknownNetworkError(显示源文件)

代码语言:javascript
复制
type UnknownNetworkError string

func (UnknownNetworkError) Error(显示源文件)

代码语言:javascript
复制
func (e UnknownNetworkError) Error() string

func (UnknownNetworkError) Temporary(显示源文件)

代码语言:javascript
复制
func (e UnknownNetworkError) Temporary() bool

func (UnknownNetworkError) Timeout(显示源文件)

代码语言:javascript
复制
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并实现查询转义。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com