Здравствуйте! Пробую сделать мониторинг сервера ксс в delphi. Посылаю запрос через UDP на сервер так:
Код: Выделить всё
IdUDPClient1.Active:= True;
IdUDPClient1.Send(char(255)+char(255)+char(255)+char(255)+'TSource Engine Query'+Chr(0));
s:=(IdUDPClient1.ReceiveString(1000));
IdUDPClient1.Active:=False;
Сервер благополучно отвечает, но после преобразования полученных данных в строку (3 строка в коде) она содержит только название сервера и ничего больше, хотя сервер отправляет много чего! Как я понял перелопатив весь гугл по этой теме это происходит из-за того, что информация отправляемая сервером разделяется "нулевым байтом" (к примеру, в получаемых данных содержится: название сервера, потом нулевой байт, потом кол-во слотов, нулевой байт, карта, нулевой байт и т.д), а в delphi нулевой байт означает конец строки и получается, что при преобразовании полученных данных в строку, она (строка) обрывается на том месте где встречается первый нулевой байт.
Как этого избежать? Как удалить нулевые байты из полученных данных или заменить чем-то более дружелюбным? Может можно получить данные в hex-е, оттуда удалить нулевые байты... Может я вообще в корне не прав и нет там никаких нулевых байтов??! Помогите хоть чем-нибудь, уже не знаю что делать..