里面的程序类似
  TP2PMakeHole = packed record//Server指挥PeerB打洞(s2c)
    name: array [0..20] of char;//PeerA的信息
    ip: u_long;
    port: Integer;
  end;
  TP2PMakeHolePack = packed record
    head: TP2PHead;
    body: TP2PMakeHole;
  end;  {下面的都是P2P之间的数据包结构,与服务器无关}
  TP2PHole = packed record//P2P之间的打洞信息
  end;
  TP2PHolePack = packed record
    head: TP2PHead;
    body: TP2PHole;
  end;
  TP2PMessage = packed record//P2P之间的文本聊天数据包
    name: array [0..20] of char;//发起人
    Text: array [0..1000] of char;
  end;
  TP2PMessagePack = packed record
    head: TP2PHead;
    body: TP2PMessage;
  end;
请问如何发送数据结构,谢谢,

解决方案 »

  1.   

    Socket SendBuffer或者一个一个字段的传,我目前也在做这个,还没头绪,这只是个我的想法
      

  2.   

    给你个代码这是我的项目发送数据包代码 //把数据封装到数据包
     MsgcWhisper.msghead.MsgType:=CSWhisper;
     strpcopy(MsgcWhisper.CWhisper.toname,touser);
     strpcopy(MsgcWhisper.CWhisper.phonemessage,phonemessage);
     strpcopy(MsgcWhisper.CWhisper.messageID,messageid);
     //发送
     mstream:=Tmemorystream.create;
     mstream.Write(MsgcWhisper,sizeof(TMsgCWhisper1));
     mstream.Position:=0;
     cs.Socket.SendStream(mstream);
      

  3.   

    var
      P2PMsgPack: TP2PMessagePack;
      ...
    begin
      ...
      SendResult := SendTo(SocketHandle,P2PMsgPack,sizeof(P2PMsgPack),0,PeerAddr(*对端地址*),sizeof(PeerAddr));//请注意各参数的声明)
      ...
    end;
      

  4.   

    直接用copymemery就可以了,反正在计算机里面,所有数据都是流,你可以把任何数据,比如:你可以把array of char [0..3],这个数组里面得值,copy到integer里面去,但是你还原数据得时候,要记得你原来得类型。
      

  5.   

    塞进缓冲区再发送就可以了,然后sendbuf.