错了不是!
c:TUserInfo
在clientsocket端
...
socket.SendBufReceiveBuf(c,sizeof(c));
...在serverSocket端
...
socket.ReceiveBuf(c,sizeof(c));//读这个结构
...
其实最重要的是在Server端读出数据。这个没有错误的。我是通过测试的。

解决方案 »

  1.   

    : robinhunter(深空) 
    老兄最近和指针做上对,呵呵!一个接一个问题. gz  and   up
      

  2.   

    把f^:='hi delphi ';
    改成StrCopy(f,'hi delphi ');把p.username:='Mydelphi';
    改成StrCopy(p.username,'Mydelphi');
      

  3.   

    我终于搞定了,原因就是参数赋错了。
    我跟踪 socket.ReceiveBuf(buf,size);的时候发现
    buf的指针值发生了变化,经过仔细研究发现参数传输错误,
     定义: ReceiveBuf(var Buf; Count: Integer): Integer;
     buf值不应该是指针,而应该是对象的实例,因为var的作用就是取对象的指针的,如果再传指针就是指针的指针了。该正如下:
    1.clientsocket1.Socket.SendBuf(buf^,sizeof(tuserinfo)+10);
    2.socket.ReceiveBuf(buf^,size);       
    错误全没了。
      

  4.   

    谢谢各位,结贴了。
    尤其要多谢findcsdn(findcsdn),纠正了我一个根深蒂固的错误思想,我想破头也想不到是这儿错的。