golang中net包用法(二)--IP
IP地址(Internet Protocol Address,称为互联网协议地址,简写为IP Address),是一种给主机在Internet上进行编址的方式。 type IP //IP表示一个简单的IP地址,它是一个byte类型的slice,能够接受4字节(IPV4)或者16字节(IPV6)输入。注意,IP地址是IPv4地址还是IPv6地址是语义上的特性,而不取决于切片的长度:16字节的切片也可以是IPv4地址。 type IP []bytefunc IPv4(a,b,c,d byte) IP //ipv4返回一个ipv4地址格式(a.b.c.d)的地址,这是16-byte的 func ParseCIDR(s string) (IP,*IPNet,error) //ParseCIDR将字符串s解析成一个ip地址和子网掩码的结构体中,其中字符串格式必须是IP地址和子网掩码的字符串,如:"192.168.100.1/24"或"2001:DB8::/48“等。 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地址,则默认子网掩码返回nilfunc (ip IP) Equal(x IP) bool //判断两个ip地址是否相等,其中一个ipv4地址以及相同具有ipv6格式的相同的地址认为是相等的,返回true 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)//实现了encoding.TextMarshaler的接口,其编码方式同String()函数的返回值一样。 func (ip IP) Mask(mask IPMask) IP //将mask作为ip的子网掩码获取其IP地址 func (ip IP) String() string //获取ip地址的字符串表示,如果ip是IPv4地址,返回值的格式为点分隔的,如"74.125.19.99";否则表示为IPv6格式,如"2001:4860:0:2001::68"。 func (ip IP) To16() IP //将一个 IP地址转换为16字节表示。如果ip不是一个IP地址(长度错误),To16会返回nil。 To16可对ip地址进行转换,包括IPV4和IPV6,而To4只能对IPV4地址进行转换,这就是To16和To4的区别。 func (ip IP) To4() IP //将一个 IPV4地址转换为4字节表示,如果ip不是一个ipv4地址,则返回nil func (ip *IP) UnmarshalText(text []byte) error //将ip进行反序列化,其实现了encoding.TextUnmarshaler的接口,IP地址字符串应该是ParseIP函数可以接受的格式。
type IPAddr struct { IP IP Zone string // IPv6 寻址范围 } func ResolveIPAddr(net,addr string) (*IPAddr,error) //将ip地址解析成形如"host"或者"ipv6-host%zone"的地址形式,解析域名必须在指定的网络中,指定网络包括ip,ip4或者ip6 func (a *IPAddr) Network() string //返回地址的网络类型"ip" func (a *IPAddr) String() string
type IPMask []byte func CIDRMask(ones,bits int) IPMask //返回一个CIDRMask,其中CIDRMask总bit数目是bits,钱ones位是1,其余位是0. func IPv4Mask(a,d byte) IPMask//返回ip掩码,其中ip掩码形式是ipv4掩码(4 byte模式)a.b.c.d func (m IPMask) Size() (ones,bits int)//返回掩码的前面1的数目以及总数目,如果m不是规范的子网掩码(前面为1后面为0),则返回0,0 func (m IPMask) String() string//返回掩码m的16机制表示,没有标点符号
type IPNet struct { IP IP //网络地址 Mask IPMask // 子网掩码 } func (n *IPNet) Contains(ip IP) bool//判定是否n中包含ip func (n *IPNet) Network() string//返回地址的网络名,形式是ip+net 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |