golang【通信】指定ホストのポートに接続できるか確認するサンプルコード

Go言語
//指定ホストのポートに接続できるか確認するサンプルコード
//使い方  boolTcpPortScan([ipaddress]:[port] , [タイムアウト(秒)] , [リトライ回数])
func boolTcpPortScan(strHostCPort string, intTimeout int, intRetry int) bool {

	//タイムアウト時間とリトライ設定に基づいてTCPコネクションを試みるコネクションに成功した場合trueを返す
	for intLooptmp := 0; intLooptmp <= intRetry; intLooptmp++ {

		timeTimeout := time.Duration(intTimeout) * time.Second

		_, err := net.DialTimeout("tcp", strHostCPort, timeTimeout)

		if err == nil {
			fmt.Printf("boolTcpPortScan(%s,TimeOut(%vSec),Retry(%v/%v)) Connection OK\n", strHostCPort, intTimeout, intLooptmp, intRetry)
			return true
		}

		//コネクションに失敗した場合は、エラーを出力してintTimeout分スリープしてからリトライする
		fmt.Printf("boolTcpPortScan(%s,TimeOut(%vSec),Retry(%v/%v)) Connection NG ErrorError=%s\n", strHostCPort, intTimeout, intLooptmp, intRetry, err)
		time.Sleep(timeTimeout)
	}

	//リトライ上限に達したら失敗を返す
	return false
}
	//使い方
	boolTcpPortScan("127.0.0.1:8001", 10, 5)

	//処理例
	// ポート接続OKの場合
	// boolTcpPortScan(127.0.0.1:8000,TimeOut(10Sec),Retry(0/5)) Connection OK
	//
	// ポート接続NGの場合
	// boolTcpPortScan(127.0.0.1:8001,TimeOut(10Sec),Retry(0/5)) Connection NG ErrorError=dial tcp 127.0.0.1:8001: connect: connection refused
	// boolTcpPortScan(127.0.0.1:8001,TimeOut(10Sec),Retry(1/5)) Connection NG ErrorError=dial tcp 127.0.0.1:8001: connect: connection refused
	// boolTcpPortScan(127.0.0.1:8001,TimeOut(10Sec),Retry(2/5)) Connection NG ErrorError=dial tcp 127.0.0.1:8001: connect: connection refused
	// boolTcpPortScan(127.0.0.1:8001,TimeOut(10Sec),Retry(3/5)) Connection NG ErrorError=dial tcp 127.0.0.1:8001: connect: connection refused
	// boolTcpPortScan(127.0.0.1:8001,TimeOut(10Sec),Retry(4/5)) Connection NG ErrorError=dial tcp 127.0.0.1:8001: connect: connection refused
	// boolTcpPortScan(127.0.0.1:8001,TimeOut(10Sec),Retry(5/5)) Connection NG ErrorError=dial tcp 127.0.0.1:8001: connect: connection refused
タイトルとURLをコピーしました