正常情况下使用socket.RemoteEndPoint可以获取客户端的IP和端口,可自从公司用了防火墙之后,加了什么转发规则、IP地址映射啥的(我也不懂,哈哈)之后,我这边通过socket.RemoteEndPoint获取到的IP和端口都是网关的(192.168.18.1)。在这种情况下,如何才能获取客户端的真实IP和端口呢?

解决方案 »

  1.   

    http://blog.joycode.com/ghj/archive/2008/02/20/114827.aspx
      

  2.   

    1楼的大虾,小弟是菜鸟,您给的那些个理论知识我看不出门道来,再说那里讲的好像都是什么WEB开发中,什么RESPONSE,REQUEST之类的东西,小弟只是做个SOCKET小程序,那些WEB知识小弟不知道怎么结合到我的情况中来使用啊
      

  3.   

    这个问题这么难吗?没有哪个函数能搞定吗?或者API什么的?
      

  4.   

    SOCK服务端放在防火墙后面可以正常通讯吗?要借助于网关程序之类的吧?
      

  5.   

    socket.RemoteEndPoint 应该还有端口号吧?
      

  6.   

    RemoteEndPoint
    只是代理的端口和IP,他只是最后一个直接和你通信的终端的结点而已,什么叫真实,应该说是和你通信的最终客户端的私有IP(当然该客户在内网连接你的机器)吧,这个是没有办法做到,除非,客户端把他自己的私有IP地址发给你
      

  7.   

    不知道你取得那个真正的端口号有什么用?在防火墙后面,你又不能直接跟他通讯
    ============================================如果要取得真正IP,只能是客户端主动发送自己的IP和端口给服务器了
      

  8.   

    客户端主动给服务器发送IP也没用,因为现在客户端本跟取不到自己的真正IP,取到的也只是192.XXX.XXX.XXX,并没有取到自己在公网上的IP
      

  9.   

    客户端不需要取自己的公网ip吧?IP地址映射后是没办法直接获得内网ip的吧
      

  10.   


    你说的是要取得公网IP啊有两个办法,一个是让服务器告诉客户端
    另外一个办法就是用HttpWebRequest访问 http://www.ip-adress.com/