从服务器C#接收数据到客户端delphi

时间:2020-04-01 04:33:15

标签: c# delphi tcp vcl indy10

我想将 tcp 服务器编程与Delphi中的 C# TCPCLIENT 链接。 客户端向服务器发送更多请求时,如何从服务器接收数据?要从服务器接收响应,我使用了每种方法,但是数据为空。

C#

private Dictionary<string, Message> _networkStreams = new Dictionary<string, Message>();
    private void SimpleTcpClientOnDataReceived(object sender, Message e)
            {
                string Data = e.MessageString.Replace("\u0013", "");
                Request request = JsonConvert.DeserializeObject<Request>(Data);
                Message message = _networkStreams[request.RequestId];
                message.Reply(request.Data);
            }

Delphi代码

procedure TfrmList.btnsortClick(Sender: TObject);
var Request:TRequest;
  I: Integer;
  JsonArray: TJSONArray;
  ArrayElement: TJSonValue ;
  JSonValue: TJSonValue;
  item:TListItem;

begin

      Request := TRequest.Create;
      Request.Link := '/GetAll';
      Request.Password := 'Password';
      IdTCPClient1.IOHandler.Write(TJson.ObjectToJsonString(Request));
      Memo1.Text  := Memo1.Lines.Add(IdTCPClient1.IOHandler.ReadLnWait(600));

end;

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要在邮件末尾发送(LF)或(#10)

IdTCPClient1.IOHandler.Write(TJson.ObjectToJsonString(Request));
IdTCPClient1.IOHandler.Write(#10);
Memo1.Text  := Memo1.Lines.Add(IdTCPClient1.IOHandler.ReadLnWait(600));