微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

golang的net包

package net

import "net"

net包提供了可移植的网络I/O接口,包括TCP/IPUDP、域名解析和Unixsocket

虽然本包提供了对网络原语的访问,大部分使用者只需要DialListenAccept函数提供的基本接口;以及相关的ConnListener接口。crypto/tls包提供了相同的接口和类似的DialListen函数

Dial函数和服务端建立连接:

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

Listen函数创建的服务端:

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

Index

Examples

Constants

const ( IPv4len = 4 IPv6len = 16
)

IP address lengths (bytes).

Variables

var ( IPv4bcast = IPv4(255,255,255) // 广播地址 IPv4allsys = IPv4(224,1) // 所有主机和路由器 IPv4allrouter = IPv4(224,2) // 所有路由器 IPv4zero = IPv4(0,0) // 本地地址,只能作为源地址(曾用作广播地址) )

常用的IPv4地址。

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

常用的IPv6地址。

var ( ErrWritetoConnected = errors.New("use of Writeto with pre-connected connection")
)

很多OpError类型的错误会包含本错误

typeParseError

type ParseError struct { Type string Text string }

ParseError代表一个格式错误的字符串,Type为期望的格式。

func (*ParseError)Error

func (e *ParseError) Error() string

typeError

type Error interface { error Timeout() bool // 错误是否为超时? Temporary() bool // 错误是否是临时的? }

Error代表一个网络错误

typeUnknownNetworkError

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

typeInvalidAddrError

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

typeDNSConfigError

type DNSConfigError struct { Err error }

DNSConfigError代表读取主机DNS配置时出现的错误

func (*DNSConfigError)Error

func (e *DNSConfigError) Error() string

func (*DNSConfigError)Temporary

func (e *DNSConfigError) Temporary() bool

func (*DNSConfigError)Timeout

func (e *DNSConfigError) Timeout() bool

typeDNSError

type DNSError struct { Err string // 错误的描述 Name string // 查询名称 Server string // 使用的服务器 IsTimeout bool }

DNSError代表DNS查询错误

func (*DNSError)Error

func (e *DNSError) Error() string

func (*DNSError)Temporary

func (e *DNSError) Temporary() bool

func (*DNSError)Timeout

func (e *DNSError) Timeout() bool

typeAddrError

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

typeOpError

type OpError struct { // Op是出现错误的操作,如"read""write" Op string // Net错误所在的网络类型,如"tcp""udp6" Net string // Addr是出现错误的网络地址 Addr Addr // Err是操作中出现的错误 Err error }

OpError是经常被net包的函数返回的错误类型。它描述了该错误的操作、网络类型和网络地址。

func (*OpError)Error

func (e *OpError) Error() string

func (*OpError)Temporary

func (e *OpError) Temporary() bool

func (*OpError)Timeout

func (e *OpError) Timeout() bool

funcSplitHostPort

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

函数将格式为"host:port""[host]:port""[ipv6-host%zone]:port"的网络地址分割为hostipv6-host%zoneport两个部分。Ipv6文字地址或者主机名必须用方括号括起来,如"[::1]:80""[ipv6-host]:http""[ipv6-host%zone]:80"

funcJoinHostPort

func JoinHostPort(host,port string) string

函数hostport合并为一个网络地址。一般格式为"host:port";如果host含有冒号或百分号,格式为"[host]:port"

typeHardwareAddr

type HardwareAddr []byte

HardwareAddr类型代表一个硬件地址(MAC地址)。

funcParseMAC

func ParseMAC(s string) (hw HardwareAddr,sans-serif;font-size:14px;background-color:#FFFFFF;"> ParseMAC函数使用如下格式解析一个IEEE 802 MAC-48EUI-48EUI-64硬件地址: 

01:23:45:67:89:ab
01:23:45:67:89:ab:cd:ef
01-23-45-67-89-ab
01-23-45-67-89-ab-cd-ef
0123.4567.89ab
0123.4567.89ab.cdef

func (HardwareAddr)String

func (a HardwareAddr) String() string

typeFlags

type Flags uint
const ( FlagUp Flags = 1 << iota // 接口在活动状态 Flagbroadcast // 接口支持广播 FlagLoopback // 接口是环回的 FlagPointToPoint // 接口是点对点的 FlagMulticast // 接口支持组播 )

func (Flags)String

func (f Flags) String() string

typeInterface

type Interface struct { Index int // 索引,>=1的整数 MTU int // 最大传输单元 Name string // 接口名,例如"en0"、"lo0"、"eth0.100" HardwareAddr HardwareAddr // 硬件地址,IEEE MAC-48、EUI-48或EUI-64格式 Flags Flags // 接口的属性,例如FlagUp、FlagLoopback、FlagMulticast }

Interface类型代表一个网络接口(系统与网络的一个接点)。包含接口索引到名字的映射,也包含接口的设备信息。

funcInterfaceByIndex

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

InterfaceByIndex返回指定索引的网络接口。

funcInterfaceByName

func InterfaceByName(name string) (*Interface,sans-serif;font-size:14px;background-color:#FFFFFF;"> InterfaceByName返回指定名字的网络接口。 

func (*Interface)Addrs

func (ifi *Interface) Addrs() ([]Addr,sans-serif;font-size:14px;background-color:#FFFFFF;"> Addrs方法返回网络接口ifi的一或多个接口地址。 

func (*Interface)MulticastAddrs

func (ifi *Interface) MulticastAddrs() ([]Addr,sans-serif;font-size:14px;background-color:#FFFFFF;"> MulticastAddrs返回网络接口ifi加入的多播组地址。 

funcInterfaces

func Interfaces() ([]Interface,sans-serif;font-size:14px;background-color:#FFFFFF;"> Interfaces返回该系统的网络接口列表。 

funcInterfaceAddrs

func InterfaceAddrs() ([]Addr,sans-serif;font-size:14px;background-color:#FFFFFF;"> InterfaceAddrs返回该系统的网络接口的地址列表。 

typeIP

type IP []byte

IP类型是代表单个IP地址的[]byte切片。本包的函数都可以接受4字节(IPv4)和16字节(IPv6)的切片作为输入。

注意,IP地址是IPv4地址还是IPv6地址是语义上的属性,而不取决于切片的长度:16字节的切片也可以是IPv4地址。

funcIPv4

func IPv4(a,d byte) IP

IPv4返回包含一个IPv4地址a.b.c.dIP地址(16字节格式)。

funcParseIP

func ParseIP(s string) IP

ParseIPs解析为IP地址,并返回该地址。如果s不是合法的IP地址文本表示,ParseIP会返回nil

字符串可以是小数点分隔的IPv4格式(如"74.125.19.99")或IPv6格式(如"2001:4860:0:2001::68")格式。

func (IP)IsGlobalUnicast

func (ip IP) IsGlobalUnicast() bool

如果ip是全局单播地址,则返回真。

func (IP)IsLinkLocalUnicast

func (ip IP) IsLinkLocalUnicast() bool

如果ip是链路本地单播地址,则返回真。

func (IP)IsInterfaceLocalMulticast

func (ip IP) IsInterfaceLocalMulticast() bool

如果ip是接口本地组播地址,则返回真。

func (IP)IsLinkLocalMulticast

func (ip IP) IsLinkLocalMulticast() bool

如果ip是链路本地组播地址,则返回真。

func (IP)IsMulticast

func (ip IP) IsMulticast() bool

如果ip是组播地址,则返回真。

func (IP)IsLoopback

func (ip IP) IsLoopback() bool

如果ip是环回地址,则返回真。

func (IP)IsUnspecified

func (ip IP) IsUnspecified() bool

如果ip是未指定地址,则返回真。

func (IP)DefaultMask

func (ip IP) DefaultMask() IPMask

函数返回IP地址ip认子网掩码。只有IPv4认子网掩码;如果ip不是合法的IPv4地址,会返回nil

func (IP)Equal

func (ip IP) Equal(x IP) bool

如果ipx代表同一个IP地址,Equal会返回真。代表同一地址的IPv4地址和IPv6地址也被认为是相等的。

func (IP)To16

func (ip IP) To16() IP

To16一个IP地址转换为16字节表示。如果ip不是一个IP地址(长度错误),To16会返回nil

func (IP)To4

func (ip IP) To4() IP

To4一个IPv4地址转换为4字节表示。如果ip不是IPv4地址,To4会返回nil

func (IP)Mask

func (ip IP) Mask(mask IPMask) IP

Mask方法认为maskip的子网掩码,返回ip的网络地址部分的ip。(主机地址部分都置0

func (IP)String

func (ip IP) String() string

String返回IP地址ip的字符串表示。如果ipIPv4地址,返回值的格式为点分隔的,如"74.125.19.99";否则表示为IPv6格式,如"2001:4860:0:2001::68"

func (IP)MarshalText

func (ip IP) MarshalText() ([]byte,sans-serif;font-size:14px;background-color:#FFFFFF;"> MarshalText实现了encoding.TextMarshaler接口,返回值和String方法一样。 

func (*IP)UnmarshalText

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

UnmarshalText实现了encoding.TextUnmarshaler接口。IP地址字符串应该是ParseIP函数可以接受的格式。

typeIPMask

type IPMask []byte

IPMask代表一个IP地址的掩码。

funcIPv4Mask

func IPv4Mask(a,d byte) IPMask

IPv4Mask返回一个4字节格式的IPv4掩码a.b.c.d

funcCIDRMask

func CIDRMask(ones,bits int) IPMask

CIDRMask返回一个IPMask类型值,该返回值总共有bits个字位,其中前ones个字位都是1,其余字位都是0

func (IPMask)Size

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

Size返回m的前导的1字位数和总字位数。如果m不是规范的子网掩码(字位:/^1+0+$/),将返会(0,0)

func (IPMask)String

func (m IPMask) String() string

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

typeIPNet

type IPNet struct { IP IP // 网络地址 Mask IPMask // 子网掩码 }

IPNet表示一个IP网络。

funcParseCIDR

func ParseCIDR(s string) (IP,*IPNet,sans-serif;font-size:14px;background-color:#FFFFFF;"> ParseCIDRs作为一个CIDR(无类型域间路由)的IP地址和掩码字符串,如"192.168.100.1/24""2001:DB8::/48",解析并返回IP地址和IP网络,参见RFC 4632RFC 4291

函数会返回IP地址和该IP所在的网络和掩码。例如,ParseCIDR("192.168.100.1/16")会返回IP地址192.168.100.1IP网络192.168.0.0/16

func (*IPNet)Contains

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

Contains报告该网络是否包含地址ip

func (*IPNet)Network

func (n *IPNet) Network() string

Network返回网络类型名:"ip+net",注意该类型名是不合法的。

func (*IPNet)String

func (n *IPNet) String() string

String返回nCIDR表示,如"192.168.100.1/24""2001:DB8::/48",参见RFC 4632RFC 4291。如果nMask字段不是规范格式,它会返回一个包含n.IP.String()、斜线、n.Mask.String()(此时表示为无标点十六进制格式)的字符串,如"192.168.100.1/c000ff00"

typeAddr

type Addr interface { Network() string // 网络名 String() string // 字符串格式的地址 }

Addr代表一个网络终端地址。

typeConn

type Conn interface { // Read从连接中读取数据 // Read方法可能会在超过某个固定时间限制后超时返回错误,该错误Timeout()方法返回真 Read(b []byte) (n int,err error) // Write从连接中写入数据 // Write方法可能会在超过某个固定时间限制后超时返回错误,该错误Timeout()方法返回真 Write(b []byte) (n int,err error) // Close方法关闭该连接 // 并会导致任何阻塞中的ReadWrite方法不再阻塞并返回错误 Close() error // 返回本地网络地址 LocalAddr() Addr // 返回远端网络地址 RemoteAddr() Addr // 设定该连接的读写deadline,等价于同时调用SetReadDeadlineSetWriteDeadline // deadline一个绝对时间,超过该时间后I/O操作就会直接因超时失败返回而不会阻塞 // deadline对之后的所有I/O操作都起效,而不仅仅是下一次的读或写操作 // 参数t为零值表示不设置期限 SetDeadline(t time.Time) error // 设定该连接的读操作deadline,参数t为零值表示不设置期限 SetReadDeadline(t time.Time) error // 设定该连接的写操作deadline,参数t为零值表示不设置期限 // 即使写入超时,返回值n也可能>0,说明成功写入了部分数据 SetWriteDeadline(t time.Time) error }

Conn接口代表通用的面向流的网络连接。多个线程可能会同时调用一个Conn方法

funcDial

func Dial(network,address string) (Conn,sans-serif;font-size:14px;background-color:#FFFFFF;"> 在网络network上连接地址address,并返回一个Conn接口。可用的网络类型有: 

"tcp""tcp4""tcp6""udp""udp4""udp6""ip""ip4""ip6""unix""unixgram""unixpacket"

TCPUDP网络,地址格式是host:port[host]:port,参见函数JoinHostPortSplitHostPort

Dial("tcp","12.34.56.78:80")
Dial("tcp","google.com:http")
Dial("tcp","[2001:db8::1]:http")
Dial("tcp","[fe80::1%lo0]:80")

IP网络,network必须是"ip""ip4""ip6"后跟冒号和协议号或者协议名,地址必须是IP地址字面值。

Dial("ip4:1","127.0.0.1")
Dial("ip6:ospf","::1")

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

funcDialTimeout

func DialTimeout(network,address string,timeout time.Duration) (Conn,sans-serif;font-size:14px;background-color:#FFFFFF;"> DialTimeout类似Dial但采用了超时。timeout参数如果必要可包含名称解析。 

funcPipe

func Pipe() (Conn,Conn)

Pipe创建一个内存中的同步、全双工网络连接。连接的两端都实现了Conn接口。一端的读取对应另一端的写入,直接将数据在两端之间作拷贝;没有内部缓冲。

typePacketConn

type PacketConn interface { // ReadFrom方法从连接读取一个数据包,并将有效信息写入b // ReadFrom方法可能会在超过某个固定时间限制后超时返回错误,该错误Timeout()方法返回真 // 返回写入的字节数和该数据包的来源地址 ReadFrom(b []byte) (n int,addr Addr,err error) // Writeto方法将有效数据b写入一个数据包发送给addr // Writeto方法可能会在超过某个固定时间限制后超时返回错误,该错误Timeout()方法返回真 // 在面向数据包的连接中,写入超时非常罕见 Writeto(b []byte,addr Addr) (n int,err error) // Close方法关闭该连接 // 会导致任何阻塞中的ReadFromWriteto方法不再阻塞并返回错误 Close() error // 返回本地网络地址 LocalAddr() Addr // 设定该连接的读写deadline SetDeadline(t time.Time) error // 设定该连接的读操作deadline,参数t为零值表示不设置期限 // 如果时间到达deadline,读操作就会直接因超时失败返回而不会阻塞 SetReadDeadline(t time.Time) error // 设定该连接的写操作deadline,参数t为零值表示不设置期限 // 如果时间到达deadline,写操作就会直接因超时失败返回而不会阻塞 // 即使写入超时,返回值n也可能>0,说明成功写入了部分数据 SetWriteDeadline(t time.Time) error }

PacketConn接口代表通用的面向数据包的网络连接。多个线程可能会同时调用一个Conn方法

funcListenPacket

func ListenPacket(net,laddr string) (PacketConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> ListenPacket函数监听本地网络地址laddr。网络类型net必须是面向数据包的网络类型: 

"ip""ip4""ip6""udp""udp4""udp6"、或"unixgram"laddr的格式参见Dial函数

typeDialer

type Dialer struct { // Timeoutdial操作等待连接建立的最大时长,认值代表没有超时。 // 如果Deadline字段也被设置了,dial操作也可能更早失败。 // 不管有没有设置超时,操作系统都可能强制执行它的超时设置。 // 例如,TCP(系统)超时一般在3分钟左右。 Timeout time.Duration // Deadline一个具体的时间点期限,超过该期限后,dial操作就会失败。 // 如果Timeout字段也被设置了,dial操作也可能更早失败。 // 零值表示没有期限,即遵守操作系统的超时设置。 Deadline time.Time // LocalAddrdial一个地址时使用的本地地址。 // 该地址必须是与dial的网络相容的类型。 // 如果为nil,将会自动选择一个本地地址。 LocalAddr Addr // DualStack允许单次dial操作在网络类型为"tcp" // 且目的地是一个主机名的DNS记录具有多个地址时, // 尝试建立多个IPv4IPv6连接,并返回第一个建立的连接。 DualStack bool // KeepAlive指定一个活动的网络连接的生命周期;如果为0,会禁止keep-alive // 不支持keep-alive的网络连接会忽略本字段。 KeepAlive time.Duration }

Dialer类型包含与某个地址建立连接时的参数。

一个字段的零值都等价于没有该字段。因此调用Dialer零值的Dial方法等价于调用Dial函数

func (*Dialer)Dial

func (d *Dialer) Dial(network,sans-serif;font-size:14px;background-color:#FFFFFF;"> Dial在指定的网络上连接指定的地址。参见Dial函数获取网络和地址参数的描述。 

typeListener

type Listener interface { // Addr返回该接口的网络地址 Addr() Addr // Accept等待并返回下一个连接到该接口的连接 Accept() (c Conn,err error) // Close关闭该接口,并使任何阻塞的Accept操作都会不再阻塞并返回错误 Close() error }

Listener一个用于面向流的网络协议的公用的网络监听器接口。多个线程可能会同时调用一个Listener方法

funcListen

func Listen(net,laddr string) (Listener,sans-serif;font-size:14px;background-color:#FFFFFF;"> 返回在一个本地网络地址laddr上监听的Listener。网络类型参数net必须是面向流的网络: 

"tcp""tcp4""tcp6""unix""unixpacket"。参见Dial函数获取laddr的语法。

typeIPAddr

type IPAddr struct { IP IP Zone string // IPv6范围寻址域 }

IPAddr代表一个IP终端的地址。

funcResolveIPAddr

func ResolveIPAddr(net,addr string) (*IPAddr,sans-serif;font-size:14px;background-color:#FFFFFF;"> ResolveIPAddraddr作为一个格式为"host""ipv6-host%zone"IP地址来解析。函数会在参数net指定的网络类型上解析,net必须是"ip""ip4""ip6"

func (*IPAddr)Network

func (a *IPAddr) Network() string

Network返回地址的网络类型:"ip"

func (*IPAddr)String

func (a *IPAddr) String() string

typeTCPAddr

type TCPAddr struct { IP IP Port int Zone string // IPv6范围寻址域 }

TCPAddr代表一个TCP终端地址。

funcResolveTCPAddr

func ResolveTCPAddr(net,addr string) (*TCPAddr,sans-serif;font-size:14px;background-color:#FFFFFF;"> ResolveTCPAddraddr作为TCP地址解析并返回。参数addr格式为"host:port""[ipv6-host%zone]:port",解析得到网络名和端口名;net必须是"tcp""tcp4""tcp6"

IPv6地址字面值/名称必须用方括号包起来,如"[::1]:80""[ipv6-host]:http""[ipv6-host%zone]:80"

func (*TCPAddr)Network

func (a *TCPAddr) Network() string

返回地址的网络类型,"tcp"

func (*TCPAddr)String

func (a *TCPAddr) String() string

typeUDPAddr

type UDPAddr struct { IP IP Port int Zone string // IPv6范围寻址域 }

UDPAddr代表一个UDP终端地址。

funcResolveUDPAddr

func ResolveUDPAddr(net,addr string) (*UDPAddr,sans-serif;font-size:14px;background-color:#FFFFFF;"> ResolveTCPAddraddr作为TCP地址解析并返回。参数addr格式为"host:port""[ipv6-host%zone]:port",解析得到网络名和端口名;net必须是"udp""udp4""udp6"

IPv6地址字面值/名称必须用方括号包起来,如"[::1]:80""[ipv6-host]:http""[ipv6-host%zone]:80"

func (*UDPAddr)Network

func (a *UDPAddr) Network() string

返回地址的网络类型,"udp"

func (*UDPAddr)String

func (a *UDPAddr) String() string

typeUnixAddr

type UnixAddr struct { Name string Net string }

UnixAddr代表一个Unixsocket终端地址。

funcResolveUnixAddr

func ResolveUnixAddr(net,addr string) (*UnixAddr,sans-serif;font-size:14px;background-color:#FFFFFF;"> ResolveUnixAddraddr作为Unixsocket地址解析,参数net指定网络类型:"unix""unixgram""unixpacket"

func (*UnixAddr)Network

func (a *UnixAddr) Network() string

返回地址的网络类型,"unix""unixgram""unixpacket"

func (*UnixAddr)String

func (a *UnixAddr) String() string

typeIPConn

type IPConn struct { // 内含隐藏或非导出字段 }

IPConn类型代表IP网络连接,实现了ConnPacketConn接口。

funcDialIP

func DialIP(netProto string,raddr *IPAddr) (*IPConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> DialIP在网络协议netProto上连接本地地址laddr和远端地址raddrnetProto必须是"ip""ip4""ip6"后跟冒号和协议名或协议号。 

funcListenIP

func ListenIP(netProto string,laddr *IPAddr) (*IPConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> ListenIP创建一个接收目的地是本地地址laddrIP数据包的网络连接,返回的*IPConnReadFromWriteto方法可以用来发送和接收IP数据包。(每个包都可获取来源址或者设置目标地址) 

func (*IPConn)LocalAddr

func (c *IPConn) LocalAddr() Addr

LocalAddr返回本地网络地址

func (*IPConn)RemoteAddr

func (c *IPConn) RemoteAddr() Addr

RemoteAddr返回远端网络地址

func (*IPConn)SetReadBuffer

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

SetReadBuffer设置该连接的系统接收缓冲

func (*IPConn)SetWriteBuffer

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

SetWriteBuffer设置该连接的系统发送缓冲

func (*IPConn)SetDeadline

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

SetDeadline设置读写操作绝对期限,实现了Conn接口的SetDeadline方法

func (*IPConn)SetReadDeadline

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

SetReadDeadline设置读操作绝对期限,实现了Conn接口的SetReadDeadline方法

func (*IPConn)SetWriteDeadline

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

SetWriteDeadline设置写操作绝对期限,实现了Conn接口的SetWriteDeadline方法

func (*IPConn)Read

func (c *IPConn) Read(b []byte) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> Read实现Conn接口Read方法 

func (*IPConn)ReadFrom

func (c *IPConn) ReadFrom(b []byte) (int,Addr,sans-serif;font-size:14px;background-color:#FFFFFF;"> ReadFrom实现PacketConn接口ReadFrom方法。注意本方法bug,应避免使用。 

func (*IPConn)ReadFromIP

func (c *IPConn) ReadFromIP(b []byte) (int,*IPAddr,sans-serif;font-size:14px;background-color:#FFFFFF;"> ReadFromIPc读取一个IP数据包,将有效负载拷贝到b,返回拷贝字节数和数据包来源地址。 

ReadFromIP方法会在超过一个固定的时间点之后超时,并返回一个错误。注意本方法bug,应避免使用。

func (*IPConn)ReadMsgIP

func (c *IPConn) ReadMsgiP(b,oob []byte) (n,flags int,addr *IPAddr,sans-serif;font-size:14px;background-color:#FFFFFF;"> ReadMsgiPc读取一个数据包,将有效负载拷贝进b,相关的带外数据拷贝进oob,返回拷贝进b的字节数,拷贝进oob的字节数,数据包的flag,数据包来源地址和可能的错误

func (*IPConn)Write

func (c *IPConn) Write(b []byte) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> Write实现Conn接口Write方法 

func (*IPConn)WriteTo

func (c *IPConn) Writeto(b []byte,addr Addr) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> Writeto实现PacketConn接口Writeto方法 

func (*IPConn)WriteToIP

func (c *IPConn) WritetoIP(b []byte,addr *IPAddr) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> WritetoIP通过c向地址addr发送一个数据包,b为包的有效负载,返回写入的字节。 

WritetoIP方法会在超过一个固定的时间点之后超时,并返回一个错误。在面向数据包的连接上,写入超时是十分罕见的。

func (*IPConn)WriteMsgIP

func (c *IPConn) WriteMsgiP(b,oob []byte,addr *IPAddr) (n,oobn int,sans-serif;font-size:14px;background-color:#FFFFFF;"> WriteMsgiP通过c向地址addr发送一个数据包,boob分别为包有效负载和对应的带外数据,返回写入的字节数(包数据、带外数据)和可能的错误

func (*IPConn)Close

func (c *IPConn) Close() error

Close关闭连接

func (*IPConn)File

func (c *IPConn) File() (f *os.File,sans-serif;font-size:14px;background-color:#FFFFFF;"> File方法设置下层的os.File为阻塞模式并返回其副本。 

使用者有责任在用完后关闭f关闭c不影响f关闭f也不影响c。返回的os.File类型文件描述符和原本的网络连接是不同的。试图使用该副本修改本体的属性可能会(也可能不会)得到期望的效果

typeTCPConn

type TCPConn struct { // 内含隐藏或非导出字段 }

TCPConn代表一个TCP网络连接,实现了Conn接口。

funcDialTCP

func DialTCP(net string,raddr *TCPAddr) (*TCPConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> DialTCP在网络协议net上连接本地地址laddr和远端地址raddrnet必须是"tcp""tcp4""tcp6";如果laddr不是nil,将使用它作为本地地址,否则自动选择一个本地地址。 

func (*TCPConn)LocalAddr

func (c *TCPConn) LocalAddr() Addr

LocalAddr返回本地网络地址

func (*TCPConn)RemoteAddr

func (c *TCPConn) RemoteAddr() Addr

RemoteAddr返回远端网络地址

func (*TCPConn)SetReadBuffer

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

SetReadBuffer设置该连接的系统接收缓冲

func (*TCPConn)SetWriteBuffer

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

SetWriteBuffer设置该连接的系统发送缓冲

func (*TCPConn)SetDeadline

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

SetDeadline设置读写操作期限,实现了Conn接口的SetDeadline方法

func (*TCPConn)SetReadDeadline

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

SetReadDeadline设置读操作期限,实现了Conn接口的SetReadDeadline方法

func (*TCPConn)SetWriteDeadline

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

SetWriteDeadline设置写操作期限,实现了Conn接口的SetWriteDeadline方法

func (*TCPConn)SetKeepAlive

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

SetKeepAlive设置操作系统是否应该在该连接中发送keepalive信息

func (*TCPConn)SetKeepAlivePeriod

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

SetKeepAlivePeriod设置keepalive的周期,超出会断开

func (*TCPConn)SetLinger

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

SetLinger设定当连接中仍有数据等待发送或接受时的Close方法的行为。

如果sec < 0认),Close方法立即返回,操作系统停止后台数据发送;如果sec == 0Close立刻返回,操作系统丢弃任何未发送或未接收的数据;如果sec > 0Close方法阻塞最多sec秒,等待数据发送或者接收,在一些操作系统中,在超时后,任何未发送的数据会被丢弃。

func (*TCPConn)SetNoDelay

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

SetNoDelay设定操作系统是否应该延迟数据包传递,以便发送更少的数据包(Nagle's算法)。认为真,即数据应该在Write方法后立刻发送。

func (*TCPConn)Read

func (c *TCPConn) Read(b []byte) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> Read实现了Conn接口Read方法 

func (*TCPConn)Write

func (c *TCPConn) Write(b []byte) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> Write实现了Conn接口Write方法 

func (*TCPConn)ReadFrom

func (c *TCPConn) ReadFrom(r io.Reader) (int64,sans-serif;font-size:14px;background-color:#FFFFFF;"> ReadFrom实现了io.ReaderFrom接口的ReadFrom方法 

func (*TCPConn)Close

func (c *TCPConn) Close() error

Close关闭连接

func (*TCPConn)CloseRead

func (c *TCPConn) CloseRead() error

CloseRead关闭TCP连接的读取侧(以后不能读取),应尽量使用Close方法

func (*TCPConn)CloseWrite

func (c *TCPConn) CloseWrite() error

CloseWrite关闭TCP连接的写入侧(以后不能写入),应尽量使用Close方法

func (*TCPConn)File

func (c *TCPConn) File() (f *os.File,sans-serif;font-size:14px;background-color:#FFFFFF;"> 使用者有责任在用完后关闭f关闭c不影响f关闭f也不影响c。返回的os.File类型文件描述符和原本的网络连接是不同的。试图使用该副本修改本体的属性可能会(也可能不会)得到期望的效果

typeUDPConn

type UDPConn struct { // 内含隐藏或非导出字段 }

UDPConn代表一个UDP网络连接,实现了ConnPacketConn接口。

funcDialUDP

func DialUDP(net string,raddr *UDPAddr) (*UDPConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> DialTCP在网络协议net上连接本地地址laddr和远端地址raddrnet必须是"udp""udp4""udp6";如果laddr不是nil,将使用它作为本地地址,否则自动选择一个本地地址。 

funcListenUDP

func ListenUDP(net string,laddr *UDPAddr) (*UDPConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> ListenUDP创建一个接收目的地是本地地址laddrUDP数据包的网络连接。net必须是"udp""udp4""udp6";如果laddr端口为0函数将选择一个当前可用的端口,可以用ListenerAddr方法获得该端口。返回的*UDPConnReadFromWriteto方法可以用来发送和接收UDP数据包(每个包都可获得来源地址或设置目标地址)。 

funcListenMulticastUDP

func ListenMulticastUDP(net string,ifi *Interface,gaddr *UDPAddr) (*UDPConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> ListenMulticastUDP接收目的地是ifi接口上的组地址gaddrUDP数据包。它指定了使用的接口,如果ifinil,将使用认接口。 

func (*UDPConn)LocalAddr

func (c *UDPConn) LocalAddr() Addr

LocalAddr返回本地网络地址

func (*UDPConn)RemoteAddr

func (c *UDPConn) RemoteAddr() Addr

RemoteAddr返回远端网络地址

func (*UDPConn)SetReadBuffer

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

SetReadBuffer设置该连接的系统接收缓冲

func (*UDPConn)SetWriteBuffer

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

SetWriteBuffer设置该连接的系统发送缓冲

func (*UDPConn)SetDeadline

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

SetDeadline设置读写操作期限,实现了Conn接口的SetDeadline方法

func (*UDPConn)SetReadDeadline

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

SetReadDeadline设置读操作期限,实现了Conn接口的SetReadDeadline方法

func (*UDPConn)SetWriteDeadline

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

SetWriteDeadline设置写操作期限,实现了Conn接口的SetWriteDeadline方法

func (*UDPConn)Read

func (c *UDPConn) Read(b []byte) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> Read实现Conn接口Read方法 

func (*UDPConn)ReadFrom

func (c *UDPConn) ReadFrom(b []byte) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> ReadFrom实现PacketConn接口ReadFrom方法 

func (*UDPConn)ReadFromUDP

func (c *UDPConn) ReadFromUDP(b []byte) (n int,addr *UDPAddr,sans-serif;font-size:14px;background-color:#FFFFFF;"> ReadFromUDPc读取一个UDP数据包,将有效负载拷贝到b,返回拷贝字节数和数据包来源地址。 

ReadFromUDP方法会在超过一个固定的时间点之后超时,并返回一个错误

func (*UDPConn)ReadMsgUDP

func (c *UDPConn) ReadMsgUDP(b,sans-serif;font-size:14px;background-color:#FFFFFF;"> ReadMsgUDPc读取一个数据包,将有效负载拷贝进b,相关的带外数据拷贝进oob,返回拷贝进b的字节数,拷贝进oob的字节数,数据包的flag,数据包来源地址和可能的错误

func (*UDPConn)Write

func (c *UDPConn) Write(b []byte) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> Write实现Conn接口Write方法 

func (*UDPConn)WriteTo

func (c *UDPConn) Writeto(b []byte,sans-serif;font-size:14px;background-color:#FFFFFF;"> Writeto实现PacketConn接口Writeto方法 

func (*UDPConn)WriteToUDP

func (c *UDPConn) WritetoUDP(b []byte,addr *UDPAddr) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> WritetoUDP通过c向地址addr发送一个数据包,b为包的有效负载,返回写入的字节。 

WritetoUDP方法会在超过一个固定的时间点之后超时,并返回一个错误。在面向数据包的连接上,写入超时是十分罕见的。

func (*UDPConn)WriteMsgUDP

func (c *UDPConn) WriteMsgUDP(b,addr *UDPAddr) (n,sans-serif;font-size:14px;background-color:#FFFFFF;"> WriteMsgUDP通过c向地址addr发送一个数据包,boob分别为包有效负载和对应的带外数据,返回写入的字节数(包数据、带外数据)和可能的错误

func (*UDPConn)Close

func (c *UDPConn) Close() error

Close关闭连接

func (*UDPConn)File

func (c *UDPConn) File() (f *os.File,sans-serif;font-size:14px;background-color:#FFFFFF;"> 使用者有责任在用完后关闭f关闭c不影响f关闭f也不影响c。返回的os.File类型文件描述符和原本的网络连接是不同的。试图使用该副本修改本体的属性可能会(也可能不会)得到期望的效果

typeUnixConn

type UnixConn struct { // 内含隐藏或非导出字段 }

UnixConn代表Unixsocket连接,实现了ConnPacketConn接口。

funcDialUnix

func DialUnix(net string,raddr *UnixAddr) (*UnixConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> DialUnix在网络协议net上连接本地地址laddr和远端地址raddrnet必须是"unix""unixgram""unixpacket",如果laddr不是nil将使用它作为本地地址,否则自动选择一个本地地址。 

funcListenUnixgram

func ListenUnixgram(net string,laddr *UnixAddr) (*UnixConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> ListenUnixgram接收目的地是本地地址laddrUnix datagram网络连接。net必须是"unixgram",返回的*UnixConnReadFromWriteto方法可以用来发送和接收数据包(每个包都可获取来源址或者设置目标地址)。 

func (*UnixConn)LocalAddr

func (c *UnixConn) LocalAddr() Addr

LocalAddr返回本地网络地址

func (*UnixConn)RemoteAddr

func (c *UnixConn) RemoteAddr() Addr

RemoteAddr返回远端网络地址

func (*UnixConn)SetReadBuffer

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

SetReadBuffer设置该连接的系统接收缓冲

func (*UnixConn)SetWriteBuffer

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

SetWriteBuffer设置该连接的系统发送缓冲

func (*UnixConn)SetDeadline

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

SetDeadline设置读写操作期限,实现了Conn接口的SetDeadline方法

func (*UnixConn)SetReadDeadline

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

SetReadDeadline设置读操作期限,实现了Conn接口的SetReadDeadline方法

func (*UnixConn)SetWriteDeadline

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

SetWriteDeadline设置写操作期限,实现了Conn接口的SetWriteDeadline方法

func (*UnixConn)Read

func (c *UnixConn) Read(b []byte) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> Read实现了Conn接口Read方法 

func (*UnixConn)ReadFrom

func (c *UnixConn) ReadFrom(b []byte) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> ReadFrom实现PacketConn接口ReadFrom方法 

func (*UnixConn)ReadFromUnix

func (c *UnixConn) ReadFromUnix(b []byte) (n int,addr *UnixAddr,sans-serif;font-size:14px;background-color:#FFFFFF;"> ReadFromUnixc读取一个UDP数据包,将有效负载拷贝到b,返回拷贝字节数和数据包来源地址。 

ReadFromUnix方法会在超过一个固定的时间点之后超时,并返回一个错误

func (*UnixConn)ReadMsgUnix

func (c *UnixConn) ReadMsgUnix(b,sans-serif;font-size:14px;background-color:#FFFFFF;"> ReadMsgUnixc读取一个数据包,将有效负载拷贝进b,相关的带外数据拷贝进oob,返回拷贝进b的字节数,拷贝进oob的字节数,数据包的flag,数据包来源地址和可能的错误

func (*UnixConn)Write

func (c *UnixConn) Write(b []byte) (int,sans-serif;font-size:14px;background-color:#FFFFFF;"> Write实现了Conn接口Write方法 

func (*UnixConn)WriteTo

func (c *UnixConn) Writeto(b []byte,sans-serif;font-size:14px;background-color:#FFFFFF;"> Writeto实现PacketConn接口Writeto方法 

func (*UnixConn)WriteToUnix

func (c *UnixConn) WritetoUnix(b []byte,addr *UnixAddr) (n int,sans-serif;font-size:14px;background-color:#FFFFFF;"> WritetoUnix通过c向地址addr发送一个数据包,b为包的有效负载,返回写入的字节。 

WritetoUnix方法会在超过一个固定的时间点之后超时,并返回一个错误。在面向数据包的连接上,写入超时是十分罕见的。

func (*UnixConn)WriteMsgUnix

func (c *UnixConn) WriteMsgUnix(b,addr *UnixAddr) (n,sans-serif;font-size:14px;background-color:#FFFFFF;"> WriteMsgUnix通过c向地址addr发送一个数据包,boob分别为包有效负载和对应的带外数据,返回写入的字节数(包数据、带外数据)和可能的错误

func (*UnixConn)Close

func (c *UnixConn) Close() error

Close关闭连接

func (*UnixConn)CloseRead

func (c *UnixConn) CloseRead() error

CloseRead关闭TCP连接的读取侧(以后不能读取),应尽量使用Close方法

func (*UnixConn)CloseWrite

func (c *UnixConn) CloseWrite() error

CloseWrite关闭TCP连接的写入侧(以后不能写入),应尽量使用Close方法

func (*UnixConn)File

func (c *UnixConn) File() (f *os.File,sans-serif;font-size:14px;background-color:#FFFFFF;"> 使用者有责任在用完后关闭f关闭c不影响f关闭f也不影响c。返回的os.File类型文件描述符和原本的网络连接是不同的。试图使用该副本修改本体的属性可能会(也可能不会)得到期望的效果

typeTCPListener

type TCPListener struct { // 内含隐藏或非导出字段 }

TCPListener代表一个TCP网络的监听者。使用者应尽量使用Listener接口而不是假设(网络连接为)TCP

funcListenTCP

func ListenTCP(net string,laddr *TCPAddr) (*TCPListener,sans-serif;font-size:14px;background-color:#FFFFFF;"> ListenTCP在本地TCP地址laddr上声明并返回一个*TCPListenernet参数必须是"tcp""tcp4""tcp6",如果laddr的端口字段为0函数将选择一个当前可用的端口,可以用ListenerAddr方法获得该端口。 

func (*TCPListener)Addr

func (l *TCPListener) Addr() Addr

Addr返回l监听的的网络地址,一个*TCPAddr

func (*TCPListener)SetDeadline

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

设置监听器执行的期限,tTime零值则会关闭期限限制。

func (*TCPListener)Accept

func (l *TCPListener) Accept() (Conn,sans-serif;font-size:14px;background-color:#FFFFFF;"> Accept用于实现Listener接口的Accept方法;他会等待下一个呼叫,并返回一个该呼叫的Conn接口。 

func (*TCPListener)AcceptTCP

func (l *TCPListener) AcceptTCP() (*TCPConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> AcceptTCP接收下一个呼叫,并返回一个新的*TCPConn

func (*TCPListener)Close

func (l *TCPListener) Close() error

Close停止监听TCP地址,已经接收的连接不受影响。

func (*TCPListener)File

func (l *TCPListener) File() (f *os.File,sans-serif;font-size:14px;background-color:#FFFFFF;"> File方法返回下层的os.File的副本,并将该副本设置为阻塞模式。 

使用者有责任在用完后关闭f关闭c不影响f关闭f也不影响c。返回的os.File类型文件描述符和原本的网络连接是不同的。试图使用该副本修改本体的属性可能会(也可能不会)得到期望的效果

typeUnixListener

type UnixListener struct { // 内含隐藏或非导出字段 }

UnixListener代表一个Unixscoket的监听者。使用者应尽量使用Listener接口而不是假设(网络连接为)Unixscoket

funcListenUnix

func ListenUnix(net string,laddr *UnixAddr) (*UnixListener,sans-serif;font-size:14px;background-color:#FFFFFF;"> ListenTCPUnixscoket地址laddr上声明并返回一个*UnixListenernet参数必须是"unix""unixpacket"

func (*UnixListener)Addr

func (l *UnixListener) Addr() Addr

Addr返回l的监听的Unixsocket地址

func (*UnixListener)SetDeadline

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

设置监听器执行的期限,tTime零值则会关闭期限限制

func (*UnixListener)Accept

func (l *UnixListener) Accept() (c Conn,sans-serif;font-size:14px;background-color:#FFFFFF;"> Accept用于实现Listener接口的Accept方法;他会等待下一个呼叫,并返回一个该呼叫的Conn接口。 

func (*UnixListener)AcceptUnix

func (l *UnixListener) AcceptUnix() (*UnixConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> AcceptUnix接收下一个呼叫,并返回一个新的*UnixConn

func (*UnixListener)Close

func (l *UnixListener) Close() error

Close停止监听Unixsocket地址,已经接收的连接不受影响。

func (*UnixListener)File

func (l *UnixListener) File() (f *os.File,sans-serif;font-size:14px;background-color:#FFFFFF;"> 使用者有责任在用完后关闭f关闭c不影响f关闭f也不影响c。返回的os.File类型文件描述符和原本的网络连接是不同的。试图使用该副本修改本体的属性可能会(也可能不会)得到期望的效果

funcFileConn

func FileConn(f *os.File) (c Conn,sans-serif;font-size:14px;background-color:#FFFFFF;"> FileConn返回一个下层为文件f的网络连接的拷贝。调用者有责任在结束程序前关闭f关闭c不会影响f关闭f也不会影响c。本函数与各种实现了Conn接口的类型的File方法是对应的。 

funcFilePacketConn

func FilePacketConn(f *os.File) (c PacketConn,sans-serif;font-size:14px;background-color:#FFFFFF;"> FilePacketConn函数返回一个下层为文件f的数据包网络连接的拷贝。调用者有责任在结束程序前关闭f关闭c不会影响f关闭f也不会影响c。本函数与各种实现了PacketConn接口的类型的File方法是对应的。 

funcFileListener

func FileListener(f *os.File) (l Listener,sans-serif;font-size:14px;background-color:#FFFFFF;"> FileListener返回一个下层为文件f的网络监听器的拷贝。调用者有责任在使用结束后改变l关闭l不会影响f关闭f也不会影响l。本函数与各种实现了Listener接口的类型的File方法是对应的。 

typeMX

type MX struct { Host string Pref uint16 }

MX代表一条DNS MX记录(邮件交换记录),根据收信人的地址后缀来定位邮件服务器。

typeNS

type NS struct { Host string }

NS代表一条DNS NS记录(域名服务器记录),指定该域名由哪个DNS服务器来进行解析。

typeSRV

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

SRV代表一条DNS SRV记录(资源记录),记录某个服务由哪台计算机提供。

funcLookupPort

func LookupPort(network,service string) (port int,sans-serif;font-size:14px;background-color:#FFFFFF;"> LookupPort函数查询指定网络和服务的(认)端口。 

funcLookupCNAME

func LookupCNAME(name string) (cname string,sans-serif;font-size:14px;background-color:#FFFFFF;"> LookupCNAME函数查询name的规范DNS名(但该域名未必可以访问)。如果调用者不关心规范名可以直接调用LookupHost或者LookupIP;这两个函数都会在查询时考虑到规范名。 

funcLookupHost

func LookupHost(host string) (addrs []string,sans-serif;font-size:14px;background-color:#FFFFFF;"> LookupHost函数查询主机的网络地址序列。 

funcLookupIP

func LookupIP(host string) (addrs []IP,sans-serif;font-size:14px;background-color:#FFFFFF;"> LookupIP函数查询主机的ipv4ipv6地址序列。 

funcLookupAddr

func LookupAddr(addr string) (name []string,sans-serif;font-size:14px;background-color:#FFFFFF;"> LookupAddr查询某个地址,返回映射到该地址的主机名序列,本函数LookupHost不互为反函数

funcLookupMX

func LookupMX(name string) (mx []*MX,sans-serif;font-size:14px;background-color:#FFFFFF;"> LookupMX函数返回指定主机的按Pref字段排好序的DNS MX记录。 

funcLookupNS

func LookupNS(name string) (ns []*NS,sans-serif;font-size:14px;background-color:#FFFFFF;"> LookupNS函数返回指定主机的DNS NS记录。 

funcLookupSRV

func LookupSRV(service,name string) (cname string,addrs []*SRV,sans-serif;font-size:14px;background-color:#FFFFFF;"> LookupSRV函数尝试执行指定服务、协议、主机的SRV查询。协议proto"tcp""udp"。返回的记录按Priority字段排序,同一优先度按Weight字段随机排序。 

LookupSRV函数按照RFC 2782的规定构建用于查询DNS名。也就是说,它会查询_service._proto.name。为了适应将服务的SRV记录发布在非规范名下的情况,如果serviceproto参数都是空字符串,函数会直接查询name

funcLookupTXT

func LookupTXT(name string) (txt []string,sans-serif;font-size:14px;background-color:#FFFFFF;"> LookupTXT函数返回指定主机的DNS TXT记录。 

Bugs

在任何POSIX平台上,从"ip4"网络使用ReadFromReadFromIP方法读取数据时,即使有足够的空间,都可能不会返回完整的IPv4数据包,包括数据包的头域。即使ReadReadMsgiP方法可以返回完整的数据包,也有可能出现这种情况。因为对go 1的兼容性要求,这个情况无法被修正。因此,当必须获取完整数据包时,建议你不要使用这两个方法,请使用ReadReadMsgiP代替。

OpenBSD系统中,在"tcp"网络监听时不会同时监听IPv4IPv6连接。因为该系统中IPv4通信不会导入IPv6套接字中。请使用两个独立的监听,如果有必要的话。

原文地址:https://www.jb51.cc/go/190811.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐