IdTCPClient1接收到消息包后,反馈信息时发送消息包,能不能还是使用
IdTCPClient1.WriteLn(edMessage.Text);
现在要求在消息包前边加载4个字节的长度值与消息一起发送,而且长度值用16进制字符表示的4位整数
假设我要发送的是s:='hello'

解决方案 »

  1.   

    可以:
        IdTCPClient1.WriteInteger(iValue);
        IdTCPClient1.WriteLn(edMessage.Text);
    或者用
        IdTCPClient1.WriteBuffer(...)
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        buf:array of char;
        cnt:integer;
        s:string;
    begin
        SetLength(buf,20);
        cnt:=5;
        s:='hello';
        Pinteger(buf)^:=cnt;
        CopyMemory(pChar(integer(buf)+4),pChar(s),Length(s));
        IdTCPClient1.WriteBuffer(buf,sizeof(integer)+Length(s));
    end;