小编Sam*_*dov的帖子

Delphi TidTCPServer和TidTCPClient传输记录

我需要帮助来了解如何通过Indy TCP服务器/客户端传输记录.我有2个程序,我把客户端和另一个服务器.在客户端上我按下了一个按钮:客户端是TIdTCPClient

Client.Connect();
Run Code Online (Sandbox Code Playgroud)

在服务器端,我在ServerConnect事件上添加一行到客户端连接的备忘录

Protocol.Lines.Add(TimeToStr(Time)+' connected ');
Run Code Online (Sandbox Code Playgroud)

要从客户端发送数据,我有一条记录,我想发送:

Tmyrecord = record
IPStr: string[15];
end;
Run Code Online (Sandbox Code Playgroud)

我在那里有一个发送按钮:

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;
Run Code Online (Sandbox Code Playgroud)

在服务器端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
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它不起作用,为什么我不能显示我从客户端写的IP地址.我想读取服务器端的记录(msRecInfo),我从客户端发送.我想访问我的记录元素,在这种情况下我想读取记录的IPSTR元素.当我从客户端按下发送按钮时,应用程序挂起,服务器部分.

非常感谢提前

delphi indy

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

delphi ×1

indy ×1