深圳建设网站首页,网站开发中的渲染是什么意思,wordpress网站从零,网站建设推广专家服务在本文中#xff0c;我们将了解如何将简单的对比Java和Go是如何将字符串解析为IP地址。
Java
在Java中#xff0c;将字符串转换为IP地址最无脑的一个方法#xff1a;
import java.net.InetAddress;
import java.net.UnknownHostException;public class Main {public stat…在本文中我们将了解如何将简单的对比Java和Go是如何将字符串解析为IP地址。
Java
在Java中将字符串转换为IP地址最无脑的一个方法
import java.net.InetAddress;
import java.net.UnknownHostException;public class Main {public static void main(String[] args) {String ipString 192.168.1.1;try {InetAddress ipAddress InetAddress.getByName(ipString);System.out.println(IP地址 ipAddress.getHostAddress());} catch (UnknownHostException e) {e.printStackTrace();}}
}IPv6一个道理
import java.net.InetAddress;
import java.net.UnknownHostException;public class Main {public static void main(String[] args) {String ipString 2001:0db8:85a3:0000:0000:8a2e:0370:7334;try {InetAddress ipAddress InetAddress.getByName(ipString);System.out.println(IP地址 ipAddress.getHostAddress());} catch (UnknownHostException e) {e.printStackTrace();}}
}Go
接下来让我们看一下Go语言的net.Addr类型
type Addr interface {Network() string // name of the network (for example, tcp, udp)String() // string form of address (for example, 192.0.2.1:25, [2001:db8::1]:80) }net.Addr 只是一个接口因此任何满足此接口的类型都是有效的 IP地址
net.TCPAddrnet.UDPAddrnet.IPAddr
上述类型都实现了 net.Addr 接口因为它们具有Network和String方法。如果您注意到的话所有这些类型都有一个将字符串解析为其具体类型的函数。对于net.UDPAddr我们有net.ResolveUDPAddr对于net.TCPAddr我们有net.ResolveTCPAddr对于net.IPAddr我们有net.ResolveIPAddr
解析成net.TCPAddr
通过使用net.TCPAddr标准库中的函数net.ResolveTCPAddr如下所示
func ResolveTCPAddr(network, address string) *TCPAddr, error来看看例子
package mainimport (fmtnet
)func main() {addr, err : net.ResolveTCPAddr(tcp, 1.1.1.1:1234)if err ! nil {panic(err)}fmt.Println(Addr, addr.String())
}解析成net.UDPAddr
和TCP一个道理这里使用net.UDPAddr标准库中的函数net.ResolveUDPAddr如下所示
func ResolveUDPAddr(network, address string) *UDPAddr, error代码如下
package mainimport (fmtnet
)func main() {addr, err : net.ResolveUDPAddr(tcp, 1.1.1.1:53)if err ! nil {panic(err)}fmt.Println(Addr, addr.String())
}解析成net.IPAddr
通过使用net.IPAddr标准库中的函数net.ResolveIPAddr如下所示
func ResolveIPAddr(network, address string) *IPAddr, errorpackage mainimport (fmtnet
)func main() {addr, err : net.ResolveIPAddr(ip, 1.1.1.1)if err ! nil {panic(err)}fmt.Println(Addr, addr.String())
}总结
总体而言两种语言的实现都比较简单直观主要区别在于错误处理方式和具体的 API 使用。