to iamkylix:
我是想在前一部分放协议的命令代码,
后一部分放数据,但数据的长度,类型不一致.

解决方案 »

  1.   

    先接收STRING字段长度的内容,一般是固定长的,如不是固定长的,要有长度的定义,再接收后面的,如
    SendStr:String[10];
    TMyData=Record
      ABC:Integer;
      FGH:String[10];
    end;发送:
    Var
      MyData:TMyData;
    Begin
      SendStr :='1wwwda';
      MyData.ABC :=10;
      MyData.FGH :='dsad';Socket.SendText(SendStr);
    Socekt.SendBuffer(MyData,SizeOf(TMyData));
    End;接收:
    Var
      RevLen:Integer;
      Buffer:Array[0..10] of Char;
      MyData:TMyData;
    Begin
      Socket.RecvBuf(Buff,10);  //只接收前面的内容
      Socket.RecvBuf(MyData,SizeOf(TMyData));  //后续的内容
    end;
      

  2.   

    to alin:
    可以这样吗,我一直觉得不能这么做,
    发送时用了两次send
    接收时能在一次onreceive中全部接收到吗?
      

  3.   

    to alin:
    可以直接receive一个record吗
    Socket.RecvBuf(MyData,SizeOf(TMyData));