IP地址(Internet Protocol Address,称为互联网协议地址,简写为IP Address),是一种给主机在Internet上进行编址的方式。
type IP //IP表示一个简单的IP地址,它是一个byte类型的slice,能够接受4字节(IPV4)或者16字节(IPV6)输入。注意,IP地址是IPv4地址还是IPv6地址是语义上的特性,而不取决于切片的长度:16字节的切片也可以是IPv4地址。
type IP []byte
func IPv4(a, b, c, d byte) IP //ipv4返回一个ipv4地址格式(a.b.c.d)的地址,这是16-byte的
func ParseIP(s string) IP //ParseIP将s解析为IP地址,并返回该地址。如果s不是合法的IP地址表示,则ParseIP会返回nil。字符串可以是小数点分隔的IPv4格式(如"74.125.19.99")或IPv6格式(如"2001:4860:0:2001::68")格式。
func (ip IP) DefaultMask() IPMask //返回IP的默认子网掩码,只有ipv4具有默认子网掩码,如果ip不是一个有效的ipv4地址,则默认子网掩码返回nil
type IPAddr //表示一个IP终端的地址
type IPAddr struct {
IP IP
Zone string // IPv6 寻址范围
}
type IPConn //IPConn类型代表IP网络连接,实现了Conn和PacketConn接口
func DialIP(netProto string, laddr, raddr *IPAddr) (*IPConn, error)//DialIP在网络协议netProto上连接本地地址laddr和远端地址raddr,netProto必须是"ip"、"ip4"或"ip6"后跟冒号和协议名或协议号。
func ListenIP(netProto string, laddr *IPAddr) (*IPConn, error)//监听传输到本地ip地址的数据包,返回的ReadFrom和WriteTo方法能够用来发送和接受IP数据包
func (c *IPConn) Close() error//关闭连接
func (c *IPConn) File() (f *os.File, err error)//File设定底层的os.File为阻塞模式并返回一个copy副本,当结束时,调用者需要关闭文件,其中原文件和副本之间相互不影响,返回的os.file的文件描述符与网络连接中的文件是不同的,使用该副本修改本体的属性可能会也可能不会得到期望的效果.
func (c *IPConn) LocalAddr() Addr //返回本地的网络地址
func (c *IPConn) Read(b []byte) (int, error) //实现conn接口的读方法,将数据读入b中
func (c *IPConn) ReadFrom(b []byte) (int, Addr, error)//实现了conn的readfrom方法
func (c *IPConn) ReadFromIP(b []byte) (int, *IPAddr, error)//从c中读取一个ip包,将有效信息拷贝到b,返回拷贝的字节数和数据包的来源地址.可以通过timeout()使得该函数超时并且返回一个错误.
func (c *IPConn) ReadMsgIP(b, oob []byte) (n, oobn, flags int, addr *IPAddr, err error)//从c中读取一个ip包,将有效数据拷贝b,相关的额外信息拷贝进oob,返回拷贝进b和oob的字节数,数据包的flag,数据包来源地址以及可能出现的错误.
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) Write(b []byte) (int, error)//将b中数据写入c中,并返回写入的字节数
func (c *IPConn) WriteMsgIP(b, oob []byte, addr *IPAddr) (n, oobn int, err error)//将b和oob中的有效信息写入c中的地址,返回写入的字节数目
func (c *IPConn) WriteTo(b []byte, addr Addr) (int, error)//WriteTo实现PacketConn接口WriteTo方法
func (c *IPConn) WriteToIP(b []byte, addr *IPAddr) (int, error)//通过c向add写一个ip包,并从b中复制有效信息.可以通过设定timeout值使其过期.
type IPMask //IpMask代表一个ip地址
type IPMask []byte
type IPNet //表示一个ip网络
type IPNet struct {
IP IP //网络地址
Mask IPMask // 子网掩码
}
func (n *IPNet) String() string//返回ipnet n的cidr模式,形如RFC 4632 和RFC 4291中定义的 "192.168.100.1/24"or "2001:DB8::/48",如果掩码不是规范模式,将会返回一个如下形式的字符串:ip地址/一个由16进制字符组成不含标点的一个字符串,例如"192.168.100.1/c000ff00".
参考:
http://docscn.studygolang.com/pkg/net/#pkg-constants