Меня попросили преобразовать bash-скрипт, использующий nc -z
, в PowerShell.
Этот сайт сообщает мне, что nc -z
проверяет, открыт ли порт "безподключаясь к нему ". Есть ли способ сделать это с помощью .Net?
Дополнительная информация
Обычно, чтобы проверить, открыт ли порт, я бы .Net 101 * для создания соединения;и если это соединяет, я сообщаю все также. MVE ниже:
$isConnected = $false
$client = New-Object -TypeName 'System.Net.Sockets.TcpClient'
try {
$client.Connect($host, $port)
$isConnected = $client.Connected
$client.GetStream().Close(); # handle bug in .net 1.1
$client.Close();
} catch {
$isConnected = $false
} finally {
if ($client.Dispose) {$client.Dispose()} # dispose method not available in all versions, so check before calling
}
Однако, хотя он не отправляет данные, он подключается.
Возможно, описание nc -z
вводит в заблуждение / означает, что оно просто не отправляет данные... Я так и не смог найти подтверждение.