2017-01-26 1 views
0

ホスト間の接続を確認するために特定のポートを反復する方法を探しています。例golangで接続するためのポートのリストを反復する

conn, err := net.Dial("tcp", "golang.org:80") 
if err != nil { 
    // handle error 

のために私はそれはそれはUDPまたはTCPポートであるかどうかを渡すと、指定した別のポート番号を通過できるように、すべては、そのようなYAMLやJSONなどのファイルのいくつかの種類から読み取ることが入力を行うために探していますファイル内で、接続の結果を返し、一覧表示された最後のポートのチェックが終了すると終了します。私はGOへの新しいです、そして、どんな助けや提案も大いに感謝されるでしょう。

答えて

1

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 
     } 
    } 
} 
のように見える何かを探しているコードのように見えるされている場合
関連する問題