|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Это я уже понял.. вот же проверка:
Код:
if not (s = '') then LogBox.lines.Add('Сервер работает!') else LogBox.lines.Add('Сервер не отвечает!'); но ничего не происходит. И в onStatus тоже ничего не происходит. А вот когда сервер работает, инфа приходит.. и видно сообщение "сервер работает" в случае что он отключен должно быть "сервер не работает!" |
#2
|
||||
|
||||
все правильно - никакого события UPDUDPRead не будет вообще, т.к. сервер ничего не отправит - он же не работает!!! протокол UDP работает без установки соединения!!!
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
хорошо. А сообщение от событие от OnStatus может быть хоть какое-нибудь?
|
#4
|
||||
|
||||
Цитата:
-отправляй запрос серверу -жди секунд 10 -если ответа нет, считай, что он не работает Пишу программы за еду. __________________ |
#5
|
|||
|
|||
я пытаюсь написать функцию проверки...
Код:
function CheckServer(aHost, aPort: string): Boolean; var UPD: TidUDPServer; SendData: array of Char; s: string; begin Result := False; if (aPort = '') or (aHost = '') or (StrToInt(aPort) > 35555) or (StrToInt(aPort) <= 0) then Exit; UPD := TIdUDPServer.Create(nil); try UPD.DefaultPort := StrToInt(aPort); s := #255#255#255#255'TSource Engine Query'#0; SetLength(SendData, Length(s)); StrPCopy(@sendData[0], s); UPD.SendBuffer(aHost, StrToInt(aPort), SendData[0], Length(SendData)); finally FreeAndNil(UPD); end; end; как привельно её дать процедуру OnRead? |
#6
|
||||
|
||||
Код:
uses UnitCheckServer; procedure TForm1.Button100500Click(Sender: TObject); begin if CheckServer('10.4.84.102', 27015) then ShowMessage('ok') else ShowMessage('err'); end; Пишу программы за еду. __________________ |
#7
|
|||
|
|||
можно глянуть исходник?
Интересна реализация.. При помощи события и waitForSingleObject ... Но не понимаю как понимает hEvent, что ему надо вернуть в UDPRead чтобы кусок с waitForSingleObject попал нужный результат.. |