急急!.NET無法獲取到服務器端IP,請高手指教!

fbr861223 2011-08-09 09:21:07
網上可以搜索到的方法,我都試過,最後獲取的IP卻是代理服務器的ip,而不是發起訪問機器的IP,是不是因為多級代理造成此種問題呢?因為我的電腦(A)是通過另一台電腦(B)代理上網。而那一台電腦(B)則是通過另一台服務器(C)代理。
上述幾種方式從我的電腦(A)發起訪問后,程序獲取的IP都是C的IP,我想要的是A的ip請問該怎麼辦?另外,在B電腦發起訪問的時候,上述代碼是可以獲取到B的IP的。請高手指教!謝謝!
不知道我把問題描述清楚了沒有,有什麽不明白的地方也可以提出來。下面是我使用過的幾種方式。

方法1:
private string getIp1()
{
if (Request.ServerVariables["HTTP_VIA"] != null)
return Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
else
return Request.ServerVariables["REMOTE_ADDR"].ToString();
}



方法2:
public string getIp2()
{
string ip;
try
{
HttpRequest request = HttpContext.Current.Request;

if (request.ServerVariables["HTTP_VIA"] != null)
{
ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();
}
else
{
ip = request.UserHostAddress;

}
}
catch (Exception e)
{
throw e;
}

return ip;
}
方法3:
public string getIp3()
{
//可以透过代理服务器
string userIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

//如果没有代理服务器,有代理服务器获取的是代理服务器IP
if (userIP == null || userIP == "")
{ userIP=HttpContext.Current.Request.UserHostAddress;
if (userIP == null || userIP == "")
{
userIP = Request.ServerVariables["REMOTE_ADDR"];
}
}
return userIP;
}




...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
icansaymyabc 2011-08-17
  • 打赏
  • 举报
回复
如果是你自己搭建的网络。你就得把客户端和服务器之间的全部代理服务器和防火墙都拿掉,换成网关,你就能从服务器上直接获得客户端IP了。
icansaymyabc 2011-08-17
  • 打赏
  • 举报
回复
如果你要想在服务器上获取客户端IP的话,这不一定能办得到,有的代理服务器或绝大多数防火墙在发送给服务器的数据包里面不包含客户端真实IP的,这种情况下神仙也不可能知道客户端IP。除非你用黑客技术攻破了客户端<-->服务器之间的全部代理服务器和防火墙,从它们的服务记录中分析出客户端真实IP。
icansaymyabc 2011-08-17
  • 打赏
  • 举报
回复
服務器端IP还用获取吗?你连服务器的IP或域名都不知道,你怎么连结服务器的?

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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