![](/img/trans.png)
[英]Delphi XE2 / Indy TIdTCPServer / “Connection reset by peer”
[英]Send and Receive Stream with TidTCPClient and TidTCPServer in Delphi XE2
在Delphi XE2中,我有一個具有以下結構的記錄類型:
TMachinInfoRec = record
IPStr: string[15];
Username: string[50];
Computername: string[100];
SentTime: TDateTime;
HasCommand: integer;
ClientCommands: array[0..9] of TMachineCommand;
end;
我在客戶端和TMemoryStream變量上定義了一個變量,並使用TidTCPClient組件發送流:
var
MIRec: TMachinInfoRec;
msRecInfo: TMemoryStream;
begin
MIRec.IPStr = '192.168.100.101';
MIRec.Username := 'user-a';
MIRec.Computername := 'Computer-a';
MIRec.SentTime := Now();
idTCPClient.Host := '192.168.100.138';
idTCPClient.Port := 6000;
idTCPClient.Connect;
msRecInfo := TMemoryStream.Create;
msRecInfo.Write(msRecInfo, SizeOf(Client));
msRecInfo.Position := 0;
idTCPClient.IOHandler.Write(msRecInfo);
end;
並使用TidTCPServer獲取服務器端的信息:
procedure TFrmMainServer.TCPServerExecute(AContext: TIdContext);
var
MIRec: TMachinInfoRec;
msRecInfo: TMemoryStream;
begin
msRecInfo:= TMemoryStream.Create;
AContext.Connection.IOHandler.ReadStream(msRecInfo, SizeOf(MIRec));
msRecInfo.Read(msRecInfo, sizeOf(MIRec));
ShowMessage(MIRec.IPStr);
ShowMessage(MIRec.Computername)
end;
但是以這種格式顯示的字符串:
MZ?......... .. YY,....... @ ........................... ........ ....
我怎么解決這個問題?
不能
msRecInfo.Write(msRecInfo, SizeOf(Client));
是
msRecInfo.Write(miRec, SizeOf(miRec));
閱讀相同:
msRecInfo.Read(miRec, sizeOf(MIRec));
請注意,此代碼還有其他幾個不確定因素:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.