在 IIS 中,有两个 FTP 站点,他们是 A站点 和 B站点,
 分别绑定 127.0.0.1:21 和 127.0.0.2:21,他们可以一起运行 我估计这两个站点使用同一个 SOCKET 句柄,
 我的问题就是,当这个 SOCKET 接收到用户发出的请求时,如何
 分辨哪个请求是给 A站点的,哪个给是 B站点的?

解决方案 »

  1.   

    怎么可能使用同一个socket,绑定2个ip !!!!!!
    redeculous!
    每一个socket,绑定一个接口和ip。句柄是唯一的int,不会同时指向2个socket
      

  2.   

    你到底要做什么呢
    这不是IIS自己做的吗
    而且就像后来说得那样
      

  3.   


     to: yhqs540(后来)
     我没有说一个 SOCKET 句柄绑定两个 IP,
     我是说这两个站点共用同一个 SOCKET 句柄。 to: foxmail(萧遥 www.LoveSnow.com)
     我就是想知道,IIS 是如何让这样的让两个站点同时运行的,
     如果用普通的办法,是无法做到的( APACHE 好像都不行 )。
      

  4.   


     一个站点是 127.0.0.1:21 另一个是 127.0.0.2:21,
     IIS 上的这样两个站点可以同时运行。 找了几个普通的服务器,他们都不行。 我不知道 IIS 是如何办到的。 我猜测在 IIS 上,这样的两个站点实际使用的是同一个 SOCKET 句柄,
     再根据用户发出的请求的 IP,分别交给对应的站点处理。 可我想不通,IIS 是如何得到用户发出的请求的 IP?
      

  5.   


     To: zfive5(醉马Ⅴ)
     accept() 获得的是客户的 IP,而不是客户要请求的 IP。 To: awnucel(西大耻犹未雪,南京恨何时灭&抵制日货)
     谢绝灌水!
      

  6.   


     IIS 如果发现某个站点的地址是 127.***.***.***,
     他就会将绑定的 IP 设置为 INADDR_ANY。(我猜测的) 我想知道,IIS 如何判断客户请求的是 127.0.0.1 还是 127.0.0.* ?
      

  7.   

    首先, 你把你ftp站点的地址设成127.0.0.1别人能访问吗?
    要判断请求是127.0.0.1还是127.0.0.2也很简单啊. 因为客户发送的ip包中会包含他的目的地址嘛
      

  8.   

    你为什莫会估计这两个站点使用同一个 SOCKET 句柄呢?
    如果他用两个Socket,就很简单了,而且它也没有必要非用一个Socket呀!
    好处是什莫?少使用了一个Socket?
    另外,如yhqs540(后来) 所说,好像不可能用一个Socket bind 两个IP
    或者你bind一下,把代码列出来你说:
     我没有说一个 SOCKET 句柄绑定两个 IP,
     我是说这两个站点共用同一个 SOCKET 句柄那两个站点共用同一个 SOCKET 句柄是什莫意思? 不通过bind,怎莫让一个IP+port 与一个Socket联系起来?
      

  9.   


     To: sxxny(轻云(Srj))
     对,我就是这个意思。
     但是要如何获取这个客户的目标 IP 地址呢?
      

  10.   

    客户发送的ip包没有IP地址的, 你可以自己定义一个协议来支持此功能,但FTP不支持,ftp 里有一个重定向的命令,但目的不是支持多个虚拟站点,应该是负载平衡之类
      

  11.   

    你可以这样想:客户端怎莫连过来?
    create socket
    bind 
    connect() //server ip , port, ... 这里的ip是你在server 端bind的ip+port哪一个。
    除此之外还有别的吗?
    如果客户端没有发送,服务器端就不可能收到,又怎莫获取目的地址呢?
      

  12.   


     To: efis(Eagle Flying In Sky)
     但 IIS 就做到了。 服务器端绑定的是 INADDR_ANY,客户端连接 127.0.0.1 或 127.0.0.2 都行,
     服务器端接收到请求后,如何分辨客户连接的是 127.0.0.1 还是 127.0.0.2 呢?
      

  13.   

    首先客户是通过域名访问站点的吗?
    如果是,那么很简单,本地有域名解析文件(localhost)可以映射绑定的IP地址
      

  14.   


     To: cattydid(o^o)
     不是,仅仅是 IP。