怎样可以利用socket得到客户端的访问域名?
比如说我socket提供的是21端口服务。用户通过ftp://www.xxx.com访问我的21端口,我怎样利用socket 获得www.xxx.com这一个域名呢?

解决方案 »

  1.   

    若是你直接使用现成的控件,本身就会做域名解析
    比如
    var
       Socket:TClientSocket;
    begin
       Socket:=TClientSocket.Create(self);
       Socket.Port:=21;
       Socket.Server:='www.xxx.com';
       Socket.Open;
    这个时候它就会自动解析域名,假设域名存在,则解析成功,然后连接主机,若域名不存在,则返回一个错误,域名无法解析。
      

  2.   

    不好意思,写错了一个属性,不是Server,而应该是Host.
    Socket.Host:='www.xxx.com';
      

  3.   

    高手你误会了我的意思了,我意思不是在client端解释,是在服务器端的socket获得client的连接地址啊
      

  4.   

    可以取得连接的客户端的IP(PeerIP),然后DNS解析。
      

  5.   

    客户的IP怎么可能会是客户的目标地址呢?我想肯定是有方法的,不然怎样可能做到FTP支持多域名呢?
      

  6.   

    用 Indy 的 TIdDNSResolver ,现成的东西干嘛不用啊。