大家知道,在Winsocket控件中的Data属性中可以存放有关身份或其他数据信息,在应用中,我在客户端中对ClientSocket控件的DATA属性已经赋了一个记录值。
  可我在服务器端的ServerSocket控件中却不能正确读出Data的值,我的使用方法是:
TServerSocket.OnClientConnect(Sender: TObject;Socket: TCustomWinSocket);
Begin
    RemoteAddress:=Socket.RemoteAddress;
  RemoteDAta:=Socket.Data;//这样对不????
 或者:
    RemoteData:=Socket.Connects[0].Data;  //测试应用中,只有一个客户端与服务器端。
end;
  以上两种方法我都试了,可是都不能得到得到正确的DATA值,而remoteAddress却能得到正确值,各位兄弟,以上的方法我错在哪里,我怎样才能得到DATA的正确值?  

解决方案 »

  1.   

    data只能在一端使用,不能在client和sever之间传递数据
    一般是用来鉴别不同的connection用的
      

  2.   

    data里面存放的是指向一个对象TObject的指针,怎么可能在另一端取得呢
      

  3.   

    no7beckham(慕容天心) :DATA属性是是一个无类型的指针,它可以指向一个应用程序专用的数据结构。该数据结构可以包含有关客户端的信息,服务器端Socket用此信息判断客户端的连接请示。
      我的问题是,在服务器端怎样才能获得这个DATA指针里的值啊。
      

  4.   

    除非你发送DATA指针里的值,否则server无法得到!
    VCL不会帮你发送的,不信请看VCL源码
      

  5.   

    既然VCL不能自动发送DATA指针里的值,那设这个属性还有什么意义呢?
      

  6.   

    有呀,比如:作为server,需要保存client的相关信息(联接状态,用户名称,等等),这样,当server要向某一个client发信息的时候,就可以根据相关信息找到相应的connection啦