Я разработал клиент-серверное приложение с использованием 64-битного пакета kbmmw в Delphi 10.3 IDE. 64-разрядное клиентское приложение отправляет запросы на сервер с помощью метода SendRequest (метод класса kbmmwClient), задающего имя службы запросов и свойства имени пользователя. Внутри библиотека kbmmwClient создает поток запросов (класс TkbmMWCustomRequestTransportStream), который будет отправляться на сервер.
tRequestStream:=TkbmMWCustomRequestTransportStream(cStreamClass.Create(FTransport,FTransport.Info));
tRequestStream.RequestID:=rid;
tRequestStream.ServiceName:=AServiceName;
tRequestStream.Username:=FUsername;
--Begin my debug-----------------
debug('InternalSendRequest - tRequestStream.ServiceName: ' + tRequestStream.ServiceName);
debug('InternalSendRequest - tRequestStream. Username: ' + tRequestStream.Username);
t := tkbmmwmemorystream(tRequestStream.DataStream);
SetString(streamstring, PAnsiChar(t.Memory), t.Size);
write_debug('InternalSendRequest - tRequestStream - DataStream: ' + streamstring);
--End my debug
Это результат отладки:
14/04/2020 15:50:32.226: InternalSendRequest - tRequestStream.ServiceName: reqservice
14/04/2020 15:50:32.226: InternalSendRequest - tRequestStream. Username: ANDAPI
14/04/2020 15:50:32.227: InternalSendRequest - tRequestStream - DataStream: Ìû¯
STANDARDü
r e q s e r v i c e A N D A P I ÿÿÿÿ €
Почему используются символы слова службы (reqservice) и слова имени пользователя (ANDAPI) с нулевыми символами? Когда я использовал 32-битный kbmmwClient, поток запросов был отправлен в правильном формате.