在Indy中,當我們向服務器發送一些字符串時,它們會更改並以新格式顯示。例如我試圖用「WriteLn」命令在印地發送的二進制文件(的file.exe):在「Indy」(德爾福)發送帶有「WriteLn」的特殊字符串
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..,[email protected],.....o..?.I!,.LI!This program cannot be run in DOS mode....$..
正如你看到有一些字符,他們不是真正的格式,他們改變爲「?」性格。但應該注意的是,嗅探器會自動將某些字符串更改爲「。」。例如,其中一個點(「。」)可能是chr(0)或chr(5)!
但嗅探器無法將某些字符改爲「。」我們看到他們在「?」格式。 例如我打開一個二進制文件,用記事本,你可以看到真正的格式:
alt text http://up.iranblog.com/Files/9f195012dbc2425b8773.png 無論如何,問題是:我如何能在印第安納波利斯10發送帶有「WriteLn」命令的二進制文件?
什麼版本的Delphi?如果D2009 +將字符串解釋爲Unicode,其中1個字符不等於1個字節。 – 2010-07-15 07:42:27