我正在使用 Delphi XE8 试用版开发应用程序移动应用程序。目前我面临着非常关键的问题,下面我已经清楚地解释了。
我的项目分为两个不同的应用程序:
应用程序 A:此应用程序是使用 Delphi XE8 作为 VCL 应用程序开发的。这个应用程序有 TServerSocket。并使用字节数组接收数据。大多数情况下,此应用程序将数据作为打包记录接收,并根据消息头进行下一步。
应用程序 B:此应用程序是使用 Delphi XE8 作为多设备移动应用程序开发的。此应用程序具有 TIdTCPClient。并发送如下所述的数据:
TSamplePacket = packed record
strValue: array [0..10] of Char;
end;
Procedure SendData;
var
SamplePacket: TSamplePacket;
begin
SamplePacket.strValue := '1000';
IdTCPClient1.IOHandler.Write(@SamplePacket, SizeOf(TSamplePacket));
end;
而对于 IdTCPClient,则分配了 IOHandler 。
问题:当我在 Delphi XE8 Multidevice 移动应用程序中调用 SendData 程序时,它没有在服务器应用程序中收到任何数据,客户端也没有引发异常。我已经检查了 Windows 7 桌面和 Android 移动 Lolipop 版本的移动。在这两种设备中,客户端应用程序都不会发送数据。同样的代码在 Delphi XE7 for Windows 应用程序和 Android KitKat 版本的移动应用程序中运行良好。在 Delphi XE8 Multi Device 移动应用程序中,我尝试将打包记录转换为 TIDBytes。但我不知道该怎么做。?
但是当我创建了 Delphi XC8 VCL 应用程序并实现了相同的代码和相同的组件并尝试发送数据时,它在服务器应用程序中接收数据。
在 Delphi XE8 Multidevice 移动应用程序中,如果我尝试发送如下所示的文本:
IdTCPClient1.IOHandler.Writeln('test');
当我使用它时,我可以在服务器应用程序中接收数据。
请提供任何帮助以将此缓冲区数据正确发送到服务器套接字。并提前感谢