net
net 包
import "net"
- 概述
- 索引
- 示例
- 子目录
概述
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 {
// 处理错误
}
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 {
// 处理错误
}
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,可以覆盖解析程序决策,如下所示:
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
- 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
包文件
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: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(显示源文件)
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 main
import (
"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 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)
}
func ParseIP(显示源文件)
func ParseIP(s string) IP
ParseIP将s解析为IP地址,并返回结果。字符串s可以采用点分十进制(“192.0.2.1”)或IPv6(“2001:db8 :: 68”)形式。如果s不是IP地址的有效文本表示,则ParseIP返回nil。
例子
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(显示源文件)
func (ip IP) DefaultMask() IPMask
DefaultMask返回IP地址ip的默认IP掩码。只有IPv4地址具有默认掩码; 如果ip不是有效的IPv4地址,则DefaultMask返回nil。
例子
package main
import (
"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 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(显示源文件)
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 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))
}
func IPv4Mask(显示源文件)
func IPv4Mask(a, b, c, d byte) IPMask
IPv4掩码返回IPv4掩码abcd的IP掩码(4字节形式)
例子
package main
import (
"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 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(显示源文件)
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可视化工具预期的格式提供服务。 |
包邮件实现邮件消息的解析。 | |
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并实现查询转义。 |