我想把xml文档作为stringStram,用tcpServer和tcpclient进行传输和接收 请问具体该怎么写服务器端和接收端 而且是双向接收的 服务器接收后 也要返回给客户端信息(xml文档) 客户端也能接收的
谢谢了 急用! 

解决方案 »

  1.   

    先发送四个字节的stringstream.size,然后再发送具体的数据,接收端也是先接收四个字节的长度,然后再根据长度的指示接收具体的数据信息.
      

  2.   

    发送,返回值自己处理
    var
      strStream: TStringStream;
      strSize: Integer;
    begin
      strStream := TStringStream.Create('some strings');
      try
        strSize := strStream.Size;
        TcpClient1.SendBuf(strSize,sizeof(strSize),0);//记得处理返回值
         strStream.Position := 0;
        TcpClient1.SendStream(strStream);//记得处理返回值
      finally
        strStream.free;
      end;
    end;接收
    var
      memStream: TMemoryStream;
      strSize: Integer;
      iRecved: Integer;
      p: pchar;
    begin
      memStream := TMemoryStream.Create('');
      try
        strSize := 0;
        iRecved := TcpClient1.ReceiveBuf(strSize,sizeof(strSize));
        if iRecved <= 0 then raise Exception.Create('出错了');
        if iRecved <> sizeof(strSize) then Raise Exception.Create('接收数据长度不正确!');
        memStream.Size := strSize;
        memStream.Position := 0;
        p := memStream.Memory;
        while  strSize > 0 do
          begin
            iRecved := TcpClient1.ReceiveBuf(p^,strSize);
            if iRecved <= 0 then raise Exception.Create('接收数据出错');
            inc(p,iRecved);
            dec(strSize,iRecved);
          end;
          ShowMessage('接收完毕!');
      finally
        memStream.Free;
      end;
    end;
      

  3.   

    我用的是indy10中的的IdTCPClient1,没有您写的那些方法?请问该怎么办啊?