Страница, которую вы цитируете, не очень хорошо воспроизводит сообщения. Вот что Реми действительно написал:
SendCmd() предназначен только для текстовых команд/параметров. У вас было бы для отправки двоичных данных после выхода SendCmd(), и сервер должен был бы читать двоичные данные после отправки ответа клиенту. Для Например:
--- клиента ---
begin
IdTCPClient1.SendCmd('DoIt', 200);
// send binary data, such as with Write(TStream) or Write(TIdBytes)...
end;
В Write
методах о которых он говорил, являются членами TIdIOHandler
класса. Ваш объект TIdTCPConnection
имеет экземпляр этого класса в свойстве IOHandler
, и действительно, это то, что функция SendCmd
использует для отправки своей строки.
Обозначение Write(TIdBytes)
означает использование метода Write
, который принимает входной параметр TIdBytes
.
Если двоичные данные уже находятся в потоке или динамическом массиве байтов, вы можете передать один из них непосредственно методу Write
. Существует также метод WriteFile
, который отправит весь внешний файл, если вы укажете имя файла. Если вы используете версию потока, у вас есть возможность автоматически включать длину потока.
Если у вас еще нет данных в одной из этих структур, вы можете либо написать данные по частям с помощью методов Write
, которые принимают различные типы целочисленного размера, либо вы можете скопировать данные в TMemoryStream
, а затем пройти это до Write
.
Спасибо, Роб, страница путала меня из-за ее формирования. Спасибо за помощь. – Wodzu