我需要帮助来了解如何通过 Indy TCP Server/Client 传输记录。我有 2 个程序,在我放置客户端和在另一台服务器中。在客户端上的按钮上我放置连接:客户端是 TIdTCPClient
Client.Connect();
在服务器端,我在 ServerConnect 事件中添加了一条客户端已连接的备忘录
Protocol.Lines.Add(TimeToStr(Time)+' connected ');
要从客户端发送数据,我有一条记录,我想发送:
Tmyrecord = record
IPStr: string[15];
end;
我有一个发送按钮:
procedure Tform1.ButtonSendClick(Sender: TObject);
var
MIRec: Tmyrecord;
msRecInfo: TMemoryStream;
begin
MIRec.IPStr := '172.0.0.1';
msRecInfo := TMemoryStream.Create;
msRecInfo.Write(MIRec, SizeOf(MIRec));
msRecInfo.Position := 0;
Client.IOHandler.Write(msRecInfo);
end;
在服务器端 onexecute 我有以下代码,我在服务器端也声明了相同的 tmyrecord :
procedure TServerFrmMain.ServerExecute(AContext: TIdContext);
var
MIRec: Tmyrecord;
msRecInfo: TMemoryStream;
begin
if AContext.Connection.Connected then
begin
AContext.Connection.IOHandler.CheckForDataOnSource(10);
if not AContext.Connection.IOHandler.InputBufferIsEmpty then
begin
msRecInfo:= TMemoryStream.Create;
AContext.Connection.IOHandler.ReadStream(msRecInfo);
msRecInfo.Read(MIRec, sizeOf(msRecInfo));
ShowMessage(MIRec.IPStr);
end;
end;
end
我不知道为什么它不起作用,为什么我不能显示我从客户端写的 IP 地址。我想在服务器端读取我从客户端发送的记录(msRecInfo)。我想访问我的记录元素,在这种情况下,我想读取记录的 IPSTR 元素。当我从客户端按下发送按钮时,应用程序挂起,服务器部分。
非常感谢提前