我用ServerSocket和ServerCSocket控件来做通讯,
想知道客户端与服务端如何实现TObject(或者record)传输。特别是在对象(或者结构)序列化成了stream之后,服务端如何来反序列化?  是不是用TCustomWinSocket的ReceiveBuf方法来实现呢?

解决方案 »

  1.   

    我分别用的方法是ClientSocket.Socket.SendBuf(ARecord, SizeOf(aPerson)) 和     Socket.ReceiveBuf(ARecord, Socket.ReceiveLength); 发送没问题,为什么我接受之后ARecord 就是空值呢 
      

  2.   

    接收的时候处理稍微有点复杂,要检测当前结构发送是否完全,然后再截取你要的结构或者Tobject
      

  3.   

    结构体定义的是要用 packed record
    接收的时候要判断Socket.ReceiveLength>=SizeOf(aPerson),小于的话继续接收数据,知道大于等于SizeOf(aPerson),中间还要判断是否超时
      

  4.   

    我的解决方案是干脆把对象封装到XML文档里,然后把XML文档字符串发送过去,然后再把XML文档读出来,
    还原为对象,这样就可以跨语言了,比如客户端用Delphi,服务端用C#或Java
      

  5.   

    孤陋寡闻了,dephi的对象提供了反序列化的方法了吗
      

  6.   

    哪位大侠有用serversocket做的服务器的程序呢,小弟重金购买。