socket控件
客户端发送流出去 .
   ClientSocket1.Socket.SendStream(memStream);在服务器端接收语句应该怎么写了?
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
///???????
end;

解决方案 »

  1.   

    Socket.Connections[x].ReceiveBuf
    Socket.Connections[x].ReceiveText
      

  2.   

    Socket.ReceiveBur(buffer, bufferLength);
      

  3.   

    BufferedReader  in=new BufferedRead(new InputStreamReader(socket.getInputStream()))
      

  4.   

    如果用流接收,则应该是阻塞模式:
    var
      AStream:TWinSocketStream;
      Buffer:array[0..100] of Byte;  AStream:=TWinSocketStream.Create(ASocket,TimeOut);
      AStream.Read(Buffer,100)
      AStream.Free;
      

  5.   

    procedure TTLWallySmtp.RecvText;
    var
      r, i: Integer;
      s: string;
      buf: array[0..1023] of Char;
      ReplyCode, ReplyStr: string;
    begin
      ReplyCode := '';
      ReplyStr := '';
      i := 0;
      Repeat
        Application.ProcessMessages;
        r := Socket.ReceiveBuf( buf, SizeOf(buf));
        s := copy( buf, 1, r);
        ReplyCode := trim( copy( s, 1, 4));
        ReplyStr := trim( copy( s, 5, pos( CRLF, s) -5));
        i := i+1;
      until ((ReplyCode <> '') or (i>10));
        if ReplyCode <> '' then
        begin
           // first digit of replycode 2 or 3 indicates success
             if (ReplyCode[1] <> '2') and (ReplyCode[1] <> '3') then
                raise Exception.Create(ReplyStr)
        end else
            raise Exception.Create('No Reply');
    end;