寻找迭代特定端口以检查主机之间连接的方法。例如
conn, err := net.Dial("tcp", "golang.org:80")
if err != nil {
// handle error
我希望从某种类型的文件(如YAML或JSON)中读取所有输入,因此它可以传入是UDP还是TCP端口并通过文件中指定的不同端口号,返回结果连接并在完成检查列出的最终端口后终止。我是GO新手,非常感谢任何帮助或建议。
答案 0 :(得分:2)
您可以使用os
包来读取文件,使用json
包将其解析为数据结构(如切片或地图)。然后迭代该数据结构以进行连接检查。
例如,如果您的文件名为ports.json
,并且看起来像
[
{"port": 80, "protocol": "tcp"},
{"port": 53, "protocol": "udp"}
]
您正在寻找的代码类似于
package main
import (
"encoding/json"
"fmt"
"net"
"os"
)
type portDef struct {
Port int `json:"port"`
Protocol string `json:"protocol"`
}
func main() {
host := "golang.org"
file, err := os.Open("ports.json")
if err != nil {
panic(err)
}
defer file.Close()
ports := []portDef{}
err = json.NewDecoder(file).Decode(&ports)
if err != nil {
panic(err)
}
for _, p := range ports {
_, err := net.Dial(p.Protocol, fmt.Sprint("%s:%d", host, p.Port))
if err != nil {
// handle error
}
}
}