如何获取客户端真实ip地址的方法

意随行 2014-05-19 04:23:43
我做了一个服务器端,当客户端通过网络给服务器发送请求的时候,服务器能收到请求,但是客户端不能收到服务器发回来的信息,经过排查,发现服务器获取的客户端ip地址是路由器分配的那个ip地址,所以不是真实的ip地址,所以服务器应该将信息发送到那个假的ip地址上去了,那么如何才能获取到客户端那台电脑的ip呢,或者说如何才能将信息发送到路由器下面的那台主机上面,请大神解释,尽量有有代码示例
...全文
694 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2014-05-20
  • 打赏
  • 举报
回复
额,考虑过多了,只要是长连接,你无需考虑什么真不真实这件事情 因为现代路由器都是代理转发机制(只要你建立连接,通讯就是透明滴),甚至很多路由本身还有UPnP协议支持
CGabriel 2014-05-20
  • 打赏
  • 举报
回复
引用 楼主 u011573355 的回复:
我做了一个服务器端,当客户端通过网络给服务器发送请求的时候,服务器能收到请求,但是客户端不能收到服务器发回来的信息,经过排查,发现服务器获取的客户端ip地址是路由器分配的那个ip地址,所以不是真实的ip地址,所以服务器应该将信息发送到那个假的ip地址上去了,那么如何才能获取到客户端那台电脑的ip呢,或者说如何才能将信息发送到路由器下面的那台主机上面,请大神解释,尽量有有代码示例
一开始客户端连接的链接 呢? 不要丢掉它,直接用这个链接就可以把信息发回给客户端,无论它在哪里。
  • 打赏
  • 举报
回复
建议你从头学习网络知识。 记住,客户端连服务器,而不是相反。 先从此搞懂什么是服务器、什么是客户端,这两个概念。
  • 打赏
  • 举报
回复
这是最起码的网络知识。基本上所有的客户端都会在多层NAT后边,服务器根本不能去连客户端。如果你不知道这个,从一开始其实就写不出网络软件。
guotaosun 2014-05-20
  • 打赏
  • 举报
回复
很给力的!!!
youzelin 2014-05-19
  • 打赏
  • 举报
回复
我碰到过这个问题,我当时是遇到代理,不能获取真实 IP 地址,所以如果你实在无法获取的话,那就没有办法了,我那个问题至今未解决。
家鸣 2014-05-19
  • 打赏
  • 举报
回复
那么如何才能获取到客户端那台电脑的ip呢, 这个获取到也没有用,因为获取到的是内网IP,不能在外网上使用。 客户端 通过TCP长连接到服务器后,双方都可以收发数据了。 NAT会自动把收到的数据转发给内网机器(这里是透明的,不需要用户处理)。
蝶恋花雨 2014-05-19
  • 打赏
  • 举报
回复
public static string GetIPAddress()
    {
        string ipv4 = String.Empty;
        foreach (IPAddress IPA in Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress))
        {
            if (IPA.AddressFamily.ToString() == "InterNetwork")
            {
                ipv4 = IPA.ToString();
                break;
            }
        }
        if (ipv4 != String.Empty)
        {
            return ipv4;
        }
        foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName()))
        {
            if (IPA.AddressFamily.ToString() == "InterNetwork")
            {
                ipv4 = IPA.ToString();
                break;
            }
        }
        return ipv4;
    }
试试这个
wmg494005678 2014-05-19
  • 打赏
  • 举报
回复
从你描述来看,你的客户端跟服务器端是一个短连接,发送消息完成后,客户端就跟服务器端的连接关了.你这种情况,需要试试看NAT映射了,我也是纸上谈兵啊,没切实处理过这种问题

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧