Go语言获取外网和本地IP

package main

import (
	"flag"
	"fmt"
	"io"
	"net"
	"net/http"
	"os"
)

var get_ip = flag.String("get_ip", "", "external|internal")

func main() {
	fmt.Println("Usage of ./getmyip --get_ip=(external|internal)")
	flag.Parse()
	if *get_ip == "external" {
		get_external()
	}

	if *get_ip == "internal" {
		get_internal()
	}

}

func get_external() {
	resp, err := http.Get("http://myexternalip.com/raw")
	if err != nil {
		os.Stderr.WriteString(err.Error())
		os.Stderr.WriteString("\n")
		os.Exit(1)
	}
	defer resp.Body.Close()
	io.Copy(os.Stdout, resp.Body)
	os.Exit(0)
}

func get_internal() {
	addrs, err := net.InterfaceAddrs()
	if err != nil {
		os.Stderr.WriteString("Oops:" + err.Error())
		os.Exit(1)
	}
	for _, a := range addrs {
		if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
			if ipnet.IP.To4() != nil {
				os.Stdout.WriteString(ipnet.IP.String() + "\n")
			}
		}
	}
	os.Exit(0)
}
时间: 2024-08-25 20:45:17

Go语言获取外网和本地IP的相关文章

手机APP应用外网访问本地WEB应用

手机APP应用外网访问本地WEB应用 本地安装了WEB服务端,手机APP应用只能在局域网内访问本地WEB,怎样使手机APP应用从公网也能访问本地WEB? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动WEB服务端程序 默认安装的WEB服务端的端口是80. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer access key信

holer实现外网访问本地网站

外网访问本地网站 本地搭建了网站,只能在局域网内访问,怎样从公网也能访问内网网站? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动网站服务端 默认搭建的网站服务端端口是80. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer access key信息 在holer官网上申请专属的holer access key或

Android如何获取外网和本地的ip

/** * 获取外网的IP */ public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; String ipLine = ""; HttpURLConnection httpConnection = null; try { infoUrl = new URL("http://ip168.com/"); URLConnection connection = i

路由映射..外网访问本地站点..

登陆本地路由..按照下图操作.. 如果路由不一样的..大概就是这样的方向..找虚拟服务就好 外部端口是自己随便定的..别跟系统端口冲突就好.. 内部端口如果是站点服务的话就是端口 80  远程桌面的话是 3389 在这之后..外网访问域名时指向的就是你本地的机器了..因为有你的局域网IP和端口号

red hat关于桥接模式连不上外网或者没有IP

很多人·在启动虚拟机后连接不上外网,即ifconfig没有ip地址,我总结了一下需要注意的地方: 以下全是在桥接模式. 1.在windows中打开任务管理器-->服务中找到一下几个服务,确保它们开启 2.重启虚拟机,若还是连不上网,需要初始化下VMware的网络配置,如下: 还原默认设置后,手动选择桥接到那一栏,选择有线网卡,重启虚拟机即可. 虚拟机的需要修改: 3.我以前还遇见过都不可以的,需要把上面做好后整台电脑都需要重启的情况,也不知道为什么,等以后知道了再补充上咯.

Holer实现外网访问本地SQLServer数据库

外网访问内网SQLServer数据库 内网主机上安装了SQLServer数据库,只能在局域网内访问,怎样从公网也能访问本地SQLServer数据库? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动SQLServer数据库 默认安装的SQLServer数据库端口是1433. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取h

Holer实现外网访问本地RESTful API

外网访问内网RESTful API 内网主机上安装了RESTful API服务端程序,只能在局域网内访问,怎样从公网也能访问本地RESTful API? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动RESTful API服务端程序 默认安装的RESTful API服务端软件端口是8088. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件

Holer实现外网访问本地PostgreSQL数据库

外网访问内网PostgreSQL数据库 内网主机上安装了PostgreSQL数据库,只能在局域网内访问,怎样从公网也能访问本地PostgreSQL数据库? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动PostgreSQL数据库 默认安装的PostgreSQL数据库端口是5432. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.

Holer实现外网访问本地WampServer

外网访问内网WampServer 内网主机上安装了WampServer,只能在局域网内访问,怎样从公网也能访问本地WampServer? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动WampServer 默认安装的WampServer端口是80. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer access