【发布时间】:2010-07-15 07:19:18
【问题描述】:
在 Indy 中,当我们向服务器发送一些字符串时,它们会发生变化并以新的格式显示。例如,我尝试在 indy 中使用“WriteLn”命令发送二进制文件(File.exe):
Ms.LoadFromFile(FileAddress);
Ms.Read(B, Chunk);
for j := low(B) to high(B) do
begin
Part := Part + chr(B[j]);
end;
用于发送字符串:
FileClient.IOHandler.WriteLn(Part);
当客户端向服务器发送字符串时,我正在使用嗅探器监视客户端。最后我得到了这个结果:
MZ?.........yy..,.......@...................................,.....o..?.I!,.LI!This program cannot be run in DOS mode....$..
如您所见,有些字符不再是真正的格式,而是更改为“?”特点 。但需要注意的是,嗅探器会自动将某些字符串更改为“.”。 ,例如其中一个点(“.”)是 chr(0) 或 chr(5) 可能!!
但嗅探器无法将某些字符更改为“。”我们在“?”中看到它们格式 。 例如我用记事本打开一个二进制文件,你可以看到真正的格式:
alt text http://up.iranblog.com/Files/9f195012dbc2425b8773.png 无论如何,问题是:如何在 Indy 10 中使用“WriteLn”命令发送二进制文件?
【问题讨论】:
-
什么版本的Delphi?如果 D2009+,您正在将字符串解释为 Unicode,其中 1 个字符 not 等于 1 个字节。