在 proto3 文件中为 Golang 和 C# 使用 IP 字段(IPV4 或 IPV6)的更好方法是什么
What is the better way to use IP field (IPV4 or IPV6) in proto3 file for Golang and C# usage
我想在 proto3 消息中使用 IP 字段。我应该使用 proto3 中的哪种类型来表示相同的内容。该字段将由 Golang 和 C# 实现使用。我应该使用字符串吗?或 IPV4 的 fixed32 和 IPV6 的字节数?
message xyz {
string ip_addr = 1;
}
或
message xyz {
oneof ip_addr{
fixed32 v4 = 1;
bytes v6 = 2;
}
如果是第二个,那么在Golang实现中如何编码呢?比如,我应该先构造一个具有有效 IP 地址的字符串,然后将其转换为 fixed32 格式还是如何?
如果这里没有性能限制,我会使用字符串。
几乎所有语言都支持从具有标准 ipv4 或 ipv6 表示法的字符串中读取 ip 地址。如果您在 fixed32 或 bytes 字段中使用二进制表示,则必须想办法将其转换为您使用协议的每种语言。
您可能还想指定它是否始终必须是 IP 地址,或者是否可以使用 DNS 主机名。
我想在 proto3 消息中使用 IP 字段。我应该使用 proto3 中的哪种类型来表示相同的内容。该字段将由 Golang 和 C# 实现使用。我应该使用字符串吗?或 IPV4 的 fixed32 和 IPV6 的字节数?
message xyz {
string ip_addr = 1;
}
或
message xyz {
oneof ip_addr{
fixed32 v4 = 1;
bytes v6 = 2;
}
如果是第二个,那么在Golang实现中如何编码呢?比如,我应该先构造一个具有有效 IP 地址的字符串,然后将其转换为 fixed32 格式还是如何?
如果这里没有性能限制,我会使用字符串。
几乎所有语言都支持从具有标准 ipv4 或 ipv6 表示法的字符串中读取 ip 地址。如果您在 fixed32 或 bytes 字段中使用二进制表示,则必须想办法将其转换为您使用协议的每种语言。
您可能还想指定它是否始终必须是 IP 地址,或者是否可以使用 DNS 主机名。