TClientSocket.Active = False => TClientSocket.Socket.SocketHandle =Invide_Socket
property LocateHost: string read GetLocateHost;function GetLocateHost: string
begin
  if SocketHandle = Invide_Socket then Exit;
  ...
end;
所以...

解决方案 »

  1.   

    谢谢rh(强硬的毛主席万岁!伟大的周总理万岁!)。
      我的小程序中用了TClientSocket,所以我只想用其中的属性,
    似乎是LocalHost属性,但我试了后却发现好象又不是,
    除非TClientSocket不能提供本机机器名,否则我不想用getcomputername
    函数。
      

  2.   

    网络方面全部是通的。TClientSocket的LocalHost属性在客户机上只能返回主机名不能返回本客户机的名字?????
      

  3.   

    TO:copy_paste(paste)不知 GetLocateHost 返回的名字是什么名字?
    在本机机器名呢?还是与本机相连的“远程”主机机器名?
      

  4.   

    用Socket.RemoteHost得到远程主机名应该可以吧!!
      

  5.   

    TO:summernightrain(夏夜雨)
      没错。
      用Socket.RemoteHost可以得到远程主机名,
    但客户机中的客户程序中只有TClientSocket,
    所以想请教如何利用它获得本机名。
      

  6.   

    有更多用过TClientSocket,TServerSocket的同仁吗?
      

  7.   

    有更多用过TClientSocket,TServerSocket的同仁吗?分数不够,可以增加。
      

  8.   

    TClientSocket中直接属性或方法好像没有,LostHost好像只有当本机作为一个服务器时才会有实际可用值,只用TClientSocket得到计算机名有意义吗??你用以用本机的IP(Socket.LocalAddress),然后再用 GetHostByAddr函数得到本机名,或者用rh的方法.还有一个多此一举的方法,如果你非要只用Socket控件来做到得到本机名的话,可以在客户端的程序上放一个TServerSocket并打开它,然后用一个TClientSocke去连它,那么这个TClientSocke的
    RemoteHost得到就是本机名了.
      

  9.   

    楼上说的对。并不是clientsocket的属性。而是其中socket这个对象的属性。
    Socket.LocalHost
      

  10.   

    要注意CLIENTSOCKET与CLIENTSOCKET。SOCKET的区别!