package main
import (
"fmt"
"net"
"os/exec"
"strconv"
"strings"
)
func main() {
err := CheckPorts("3306")
if err != nil {
fmt.Println("端口已存在")
} else {
fmt.Println("端口不存在")
}
// GetLocalIps()
}
//获取本机ip
func GetLocalIp() string {
addrs, err := net.InterfaceAddrs()
if err != nil {
fmt.Println("get local ip failed")
}
for _, address := range addrs {
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
return ipnet.IP.String()
}
}
}
return ""
}
//获取本机ip
func GetLocalIps() {
interface_list, err := net.Interfaces()
if err != nil {
fmt.Println(err)
return
}
var byName *net.Interface
var addrList []net.Addr
var oneAddrs []string
for _, i := range interface_list {
byName, err = net.InterfaceByName(i.Name)
if err != nil {
fmt.Println(err)
return
}
addrList, err = byName.Addrs()
if err != nil {
fmt.Println(err)
return
}
for _, oneAddr := range addrList {
oneAddrs = strings.SplitN(oneAddr.String(), "/", 2)
fmt.Println(i.Name, "-", oneAddrs[0])
}
}
}
func CheckPort(port int) error {
checkStatement := fmt.Sprintf(`netstat -anp | grep -q %d ; echo $?`, port)
output, err := exec.Command("sh", "-c", checkStatement).CombinedOutput()
if err != nil {
return err
}
fmt.Println(string(output))
// log.Println(output, string(output)) ==> [48 10] 0 或 [49 10] 1
result, err := strconv.Atoi(strings.TrimSuffix(string(output), "\n"))
if err != nil {
return err
}
if result == 0 {
return fmt.Errorf("端口%d已被占用", port)
}
return nil
}
func CheckPorts(port string) error {
var err error
tcpAddress, err := net.ResolveTCPAddr("tcp4", ":"+port)
if err != nil {
return err
}
listener, err := net.ListenTCP("tcp", tcpAddress)
if err != nil {
return err
} else {
listener.Close()
}
return nil
}
golang检测ip,port
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- IP地址表示为bigendian []byte 在去的切片( IP type)所以将正确比较使用 bytes.Co...
- 1.打开IIS服务 控制面板->程序和功能->启动或关闭windows功能->Internet Informati...
- 在VBOX里 preference network 里把专有网络删除就可以了