Что нового

[Сеть, интернет] Ping и время ожидания

bushranger

Новичок
Сообщения
5
Репутация
0
Доброго времени суток.
Необходима посильная помощь.
имеется такой кусок программы
Код:
If ping ("1.1.1.1", 4000) then ......
else...

так вот, проблема в том, что из за плохого канала связи время отклика получается от 400 до 1000 мс (периодически с обрывами связи) и данный скрипт начинает выполнять условия что якобы связь отсутствует (хотя фактически она есть)
как возможно побороть данную проблему?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
623
это очень странно, ибо 4000 мс куда больше чем 1000. ставь больше, если не хватает. либо проверяй @error
 
Автор
B

bushranger

Новичок
Сообщения
5
Репутация
0
уже ставил 4000, не помогло :(
а ошибка 2 (хост недостижим), хотя параллельно запускаю ping с командной строки и там отклик есть, правда проскакивает что узел недоступен (а потом опять нормально пингуется)
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
623
bushranger
в таком случае, может имеет смысл считать что связи нет если ошибка "хост недостижим" появляется скажем 2 или 3 раза к ряду.
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
попробуй несколько раз отправить ping
Код:
If ping ("1.1.1.1") or Ping ('1.1.1.1') or Ping('1.1.1.1') then ......
else...

дело в том что в командной строке идет стандартно 4 запроса а тут всего один ИМХО :smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
bushranger
Можно, наверное, так попробовать:
Код:
$sHost = '1.1.1.1'
$iTime = 2000
$iN = 5

_Ping_Number($sHost, $iTime, $iN)
If @error Then
	MsgBox(16, 'Error', @error)
Else
	MsgBox(64, 'OK', @extended)
EndIf

Func _Ping_Number($sHostName, $iTimeOut = 4000, $iNumber = 4)
	Local $iPing
	For $i = 1 To $iNumber
		$iPing = Ping($sHostName, $iTimeOut)
		If Not @error Then ExitLoop
	Next
	If @error Then
		Return SetError(@error)
	Else
		Return SetError(0, $iPing, 1)
	EndIf
EndFunc   ;==>_Ping_Number
 
Верх