golang:将IPv4和IPv6地址从文本转换为二进制形式

str*_*ner -1 go

希望以4个字节发送ipv4地址,以16个字节发送ipv6地址-类似于inet_pton()go吗?

struct sockaddr_in sa;
char str[INET_ADDRSTRLEN];
inet_pton(AF_INET, "192.0.2.33", &(sa.sin_addr));

struct sockaddr_in6 sa;
char str[INET6_ADDRSTRLEN];
inet_pton(AF_INET6, "2001:db8:8714:3a90::12", &(sa.sin6_addr));
Run Code Online (Sandbox Code Playgroud)

我知道https://play.golang.org/p/jn8t7zJzT5v-对于IPV6地址,这看起来很复杂。

谢谢!

Mic*_*ton 7

net.ParseIP()将采用IPv4或IPv6格式的字符串,并返回net.IP包含IP地址的。

net.IP是您需要提供给大多数其他Go功能(例如与主机建立连接)的功能。

请注意,与大多数返回错误的Go函数不同,如果无法将字符串解析为IP地址,则net.ParseIP()仅返回nil

https://play.golang.org/p/Cgsrgth7JKY

  • 还要注意,net.IP的基础类型是一个字节片,因此对于所有用途而言,它已经*是* IP地址的直观二进制表示形式。 (2认同)