不是普遍问题,是你程序问题.TCP提供的是可靠传输.
讲讲你程序具体怎么做的.有代码最好.

解决方案 »

  1.   

    是不是编码有问题,按byte方式传试试。
      

  2.   

    比如:
    var s:string;
    ...
    ...SendBuffer(s,Length(s)); (乱码)
    ...SendBuffer(s[0],Length(s));(对)请好好研究Delphi自带的Demos.
      

  3.   

    你那样不对吧。var buf: PChar;
        size: integer;
    ...
       size := length(s) + 1;
       GetMem(Buf,size);
       strcopy(buf,Pchar(s));
       sendbuf(Buf^,size);
       freemem(buf,size);
      

  4.   

    传输最好不要用String,因为String是Delphi自己封装好的。
    用char队列比较好。
      

  5.   

    同意firewing(可乐)
    最好直接用socket API,九部会有那么多无法控制的环节了
      

  6.   

    注意Data Alignment (Advanced Compiler options)的设置。
      

  7.   

    var
      re:pchar;
      sbuf:string;
     begin 
        re:=nil;
        longer:=socket.ReceiveLength;
        re:=allocmem(longer);
        socket.ReceiveBuf(re^,longer);
        sbuf:=strpas(re);
        setlength(sbuf,longer);//问题出现
     end;
    我找到原因了,如果加上setlength(sbuf,longer)问题解决,否则使乱吗.但是re指向的空间大小已经定了,转换成字符串后怎么还重新分配字符串大小呢?
      

  8.   

    还是看看BORLAND的工程师怎么写的吧
    function TCustomWinSocket.ReceiveText: string;
    begin
      SetLength(Result, ReceiveBuf(Pointer(nil)^, -1));
      SetLength(Result, ReceiveBuf(Pointer(Result)^, Length(Result)));
    end;