go程序调用本机不同ip

Python020

go程序调用本机不同ip,第1张

获取本机ip的方法:

//获取ip

func externalIP() (net.IP, error) {

ifaces, err := net.Interfaces()

if err != nil {

return nil, err

}

for _, iface := range ifaces {

if iface.Flags&net.FlagUp == 0 {

continue // interface down

}

if iface.Flags&net.FlagLoopback != 0 {

continue // loopback interface

}

addrs, err := iface.Addrs()

if err != nil {

return nil, err

}

for _, addr := range addrs {

ip := getIpFromAddr(addr)

if ip == nil {

continue

}

return ip, nil

}

}

return nil, errors.New("connected to the network?")

}

//获取ip

func getIpFromAddr(addr net.Addr) net.IP {

var ip net.IP

switch v := addr.(type) {

case *net.IPNet:

ip = v.IP

case *net.IPAddr:

ip = v.IP

}

if ip == nil || ip.IsLoopback() {

return nil

}

ip = ip.To4()

if ip == nil {

return nil // not an ipv4 address

}

return ip

}

调用:

func main() {

ip, err := externalIP()

if err != nil {

fmt.Println(err)

}

fmt.Printf(ip.String())

}

结果:

导致获取出来的IP可能不一定是想要的。需要通过判断net.FlagUp标志进行确... 才能调用stop接口,不然有几率崩溃,asio的关闭流程的线程安全性,貌似需要使...

所需工具材料:已安装有TCP/IPV4协议

有两种方法

第一种方法:

1、点右下角的网络标志,鼠标右键选择打开网络和共享中心。

2、点本地连接或者无线连接。

3、点详细信息。

4、此时可以看到IPV4地址

第二种方法:

1、点开始——在运行中输入cmd回车。

2、输入ipconfig

/all回车。

3、此时可以看到本地连接或者无线连接的IPV4地址。

TLDR 在使用 Golang 编写 TCP/UDP socket 的时候,第一步做的就是地址解析。

该函数返回的地址包含的信息如下:

TCPAddr 里, IP 既可以是 IPv4 地址,也可以是 IPv6 地址。 Port 就是端口了。 Zone 是 IPv6 本地地址所在的区域。

从返回结果看该函数的参数, network 指 address 的网络类型; address 指要解析的地址,会从中解析出我们想要的 IP , Port 和 Zone 。

从源码中可以看出,参数 network 只能是如下四个值,否则会得到一个错误。

解析过程跟 ResolveTCPAddr 的一样,不过得到的是 *UDPAddr 。

UDPAddr 包含的信息如下: