golang(土拨鼠)做一个whois小工具

2,815 阅读1分钟

最近迷上土拨鼠(golang)了 真香,不仅语法简单,开发快,运行也快,内存占用还少,最重要的是发布后就一个可执行文件,拷到哪里都能用




package main

import (
	"fyne.io/fyne"
	"fyne.io/fyne/app"
	"fyne.io/fyne/widget"
	"net"
	"os"
)

const server = "whois.internic.net"

/**
whois 查询
*/
func query(domain string) (string, error) {
	conn, err := net.Dial("tcp", server+":43")
	if err != nil {
		return "", err
	}
	defer conn.Close()

	conn.Write([]byte(domain + "\r\n"))

	var buffer = make([]byte, 2048)

	n, err := conn.Read(buffer)

	if err != nil {
		return "", err
	}

	return string(buffer[:n]), nil
}

/**
golang实现的whois查询小工具
*/
func main() {
	os.Setenv("FYNE_THEME", "light")

	a := app.New()

	w := a.NewWindow("whois tools v1.0")

	w.Resize(fyne.NewSize(600, 350))
	w.CenterOnScreen()

	domainEntry := widget.NewEntry()
	resultEntry := widget.NewMultiLineEntry()
	queryButton := widget.NewButton("query", func() {
		result, err := query(domainEntry.Text)
		if err != nil {
			resultEntry.SetText("ERROR: " + err.Error())
		} else {
			resultEntry.SetText("")
			resultEntry.SetText(result)
		}
	})

	w.SetFixedSize(false)
	w.SetContent(widget.NewVBox(
		domainEntry,
		queryButton,
		resultEntry,
	))

	w.ShowAndRun()
}