在程序中定义了一个结构,如下
  comm_package = record
    ver_no:word;                       
    class_no:word;                     
    package_len:word;                  
    Package_body:string;              
  end;
请问,如何通过socket口将这个结构体包含的内容发送到Server端

解决方案 »

  1.   

    用的控件还系API? SendBuff啊
      

  2.   

    Package_body:string; 不行吧,
    Package_body:string[100];
      

  3.   

    RecThread.Connection.WriteBuffer(NewCommBlock, SizeOf(NewCommBlock), True);  
    看看indy例子IdTCPDemo
      

  4.   

    楼上的兄弟改了下还是不对嘛 
    "Package_body:string; 不行吧,Package_body:string[100];"Package_Body: Byte[100]; 记得要 Null-Terminate string 哈
      

  5.   

    var
      cp:comm_package; 
    ...
    csocket.Socket.SendBuf(cp,sizeof(comm_package));
      

  6.   

    procedure TForm1.btnSendPckClick(Sender: TObject);
    var
      Buffer : Array[0..1024] of Byte ;
      length : Integer ;
    begin
      Length := $12 ;
      // 包头
      Buffer[0] := $FF ;    // Version
      Buffer[1] := $23 ;
      Buffer[2] := $0 ;    // Length
      Buffer[3] := $12 ;
      Buffer[4] := $0 ;     // Direction
      Buffer[5] := $0 ;    // ID
      Buffer[6] := $0 ;
      Buffer[7] := $0 ;
      Buffer[8] := $0 ;
      Buffer[9] := $0 ;     // SenderID
      Buffer[10] := $6F ;
      Buffer[11] := $0 ;    // ReceiverID
      Buffer[12] := $6F ;
      Buffer[13] := $0 ;    // Repeat
      Buffer[14] := $0 ;    // Code
      Buffer[15] := $0 ;    // Subcode
      Buffer[16] := $0 ;    // Result
      Buffer[17] := $0 ;
      // 包体
    {  Buffer[18] := $EE ;    // Type
      Buffer[19] := $13 ;
      Buffer[20] := $10 ;    // Length
      Buffer[21] := $00 ;
      Buffer[22] := $37 ;   // Value 045182119897
      Buffer[23] := $39 ;
      Buffer[24] := $38 ;
      Buffer[25] := $39 ;
      Buffer[26] := $31 ;
      Buffer[27] := $31 ;
      Buffer[28] := $32 ;
      Buffer[29] := $38 ;
      Buffer[30] := $31 ;
      Buffer[31] := $35 ;
      Buffer[32] := $34 ;
      Buffer[33] := $30 ;
      Buffer[34] := $00 ;   // Type
      Buffer[35] := $14 ;
      Buffer[36] := $8 ;    // Length
      Buffer[37] := $0 ;
      Buffer[38] := $1 ;     // Value
      Buffer[39] := $0 ;
      Buffer[40] := $0 ;
      Buffer[41] := $0 ;}
      ClientSocket1.Socket.SendBuf(Buffer,Length) ;
    end;
      

  7.   

    接收时为下面的样子。
    procedure TForm1.ClientSocket1Read(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      Buffer : Array[0..1024] of Byte ;
      i : Integer ;
      strShow : String ;
    begin
      Memo1.Lines.Add('************** BEGIN ***********************') ;
      ZeroMemory(@Buffer[0],1024) ;
      Socket.ReceiveBuf(Buffer,1024) ;
      strShow := '' ;
      for i := 0 to 1023 do
      begin
        strShow := strShow + IntToHex(Buffer[i],2) ;
      end ;
      Memo1.Lines.Add(strShow) ;
    end;