一个获取外网ip的工具

作者: admin 分类: 未分类 发布时间: 2015-05-24 19:02

使用很方便 直接命令行下
ip.exe
即可获得当前外网ip 及所在地

捕获

该工具采用go语言编写:
[go]
package main

import (
“code.google.com/p/mahonia”
“fmt”
“io/ioutil”
“net/http”
“os”
“regexp”
)

func main() {

response, e := http.Get(“http://1111.ip138.com/ic.asp”)
if e != nil {
fmt.Println(“接口失效!,或以离线!”)
os.Exit(1)
}

defer response.Body.Close()
body, _ := ioutil.ReadAll(response.Body)
html := string(body)
enc2 := mahonia.NewDecoder(“GB18030”)
aa := enc2.ConvertString(html)

regex, err := regexp.Compile(“<center>(.*?)</center>”)

urls := regex.FindStringSubmatch(aa)

if err != nil {
fmt.Println(err)
os.Exit(1)
}

fmt.Println(urls[1])

}
[/go]

附件下载:

ip.zip

扩展阅读:
golang 编译后文件过大问题处理

go1.4rc2出来了,有一个用golang写的工具要编译,正好也测试一下。我是在windows7 64位下测的。编译和执行文件效率都差不多。但是1.4编译出来的文件又比1.3的大出100KB。
个人觉得这个也太大了,关键是功能也不复杂。之前用C搞单片机,所以觉得这个体积简直太夸张了,试试能否减肥。

使用原始build编译的大小
6,107KB

通过去除部分连接和调试,build部分参数查看结果。
-a 强制编译所有依赖包。
-s 去掉符号信息
-w 去掉DWARF调试信息,得到的程序就不能用gdb调试了
不建议s和w同时使用。
go build -ldflags -w test.go
但是体积还是有点大
4,633KB

最后还只能是加壳压缩。工具地址如下:

http://upx.sourceforge.net/#downloadupx

执行命令

upx.exe -9 -k "C:\test.exe"

压缩后的体积
1,172KB

通过简单测试功能正常,效率没有测试。以前做delphi的时候测试过,加壳后执行效率没有变化。
虽然还不是很满意也只能这样了。如有更好方案烦请通知。

参考文档

http://studygolang.com/topics/98

发表评论

标签云