Хотите проверить связь с конкретным хостом с произвольным количеством запросов ICMP, но также хотите, чтобы программа ping завершала работу при первом ответе (сценарий ускорения). Встроенный пинг Windows и некоторые другие, которые я тестировал, не имеют такой функции. Кто-нибудь знает программу пинга windows с этой способностью? Я знаю, что могу зациклить программу ping с параметром «-n 1», но это причина того, что программа ping запускается каждый раз при запуске цикла и в случае массового использования может вызвать нежелательную загрузку системы.
Проверить -n
параметр
-n Счетчик: указывает количество отправленных сообщений эхо-запроса. По умолчанию - 4.
ping.exe -n 1
должен отправлять только одно сообщение Echo Request
Если вы хотите ускорить процесс, вы можете проверить и другие параметры, в частности timeout
параметр.
Вы можете сделать что-то подобное в PowerShell, который как Test-Connection
командлет в качестве оболочки для ping.
param(
[string]$Name = "8.8.8.8",
[int]$count = 4
)
[bool]$Success = $false
For ($i=0; $i -le $count; $i++) {
$result = Test-Connection -ComputerName $Name -Count 1 -ErrorAction SilentlyContinue
if ($result.StatusCode -eq 0)
{
$Success = $true
$result
break;
}
}
Write-Output "Successful connection: $Success"
Test-Connection всегда использует один ping, и я помещаю вокруг него цикл, как только ping успешен, мы выходим из цикла, в идеале после первого ping, в противном случае он пытается x раз, как указано в $ count .
PowerShell не запускает исполняемый файл ping.exe, он использует указанные ниже сетевые API, поэтому под нагрузкой он может работать немного лучше.