//指定ホストのポートに接続できるか確認するサンプルコード
//使い方 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