Проверьте, открыт ли порт TCP без подключения к нему - PullRequest
6 голосов
/ 10 октября 2019

Меня попросили преобразовать 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 вводит в заблуждение / означает, что оно просто не отправляет данные... Я так и не смог найти подтверждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...