Ping だと遮断されていたり、遮断されていなくても当該ポートへ到達できるかどうかというのはわからなかったりします。
そういうとき、TCPing というツールがあるようで、これを使うとTCPのポートが開いているかどうかを確認できます。
http://www.elifulkerson.com/projects/tcping.php
Microsoft 純正だと、PortQry というツールがあるらしいです。
http://support.microsoft.com/kb/310099/ja
ただ、外部ツールのインストールは難しい… という場合が多々あります。その場合には、Powershell を使うと似たようなことができます。たとえば以下のような感じ。
# ipv4,ipv6 共通処理
Function executeTCPing($tcp) {
$sw = New-Object System.Diagnostics.Stopwatch
$sw.Start()
try {
$tcp.Connect($target, $port)
$sw.Stop()
Write-Output ("{0} port={1} ({2}) への接続: 時間 ={3:0.00}ms" -f $target, $port, $tcp.Client.RemoteEndPoint, ($sw.Elapsed).TotalMilliseconds)
} catch {
$sw.Stop()
Write-Output ("{0} port={1} への接続: 応答が確認できません" -f $target, $port, ($sw.Elapsed).TotalMilliseconds)
} finally {
$tcp.Close()
$tcp.Dispose() # エラーが出る場合は無くても良い
}
}
# ipv4 用
Function TCPing($target, $port) {
$tcp = New-Object System.Net.Sockets.TcpClient
executeTCPing $tcp
}
# ipv6 用
Function TCPing6($target, $port) {
$ipv6 = [System.Net.Sockets.AddressFamily]::InterNetworkV6
$tcp = New-Object System.Net.Sockets.TcpClient $ipv6
executeTCPing $tcp
}
使い方はこんな感じ
PS > TCPing localhost 445 localhost port=445 (127.0.0.1:445) への接続: 時間 =0.81ms PS > TCPing localhost 80 localhost port=80 への接続: 応答が確認できません PS > TCPing6 localhost 445 localhost port=445 ([::1]:445) への接続: 時間 =0.91ms