获取客户端的IP地址

/// <summary>
/// 获取客户端的IP地址
/// </summary>
/// <returns></returns>
public static string ClientIP()
{
    string result = String.Empty;
    result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (result != null && result != String.Empty)
    {
        //可能有代理
        if (result.IndexOf(".") == -1)
            //没有"."肯定是非IPv4格式
            result = null;
        else
        {
            if (result.IndexOf(",") != -1)
            {
                //有",",估计多个代理。取第一个不是内网的IP。
                result = result.Replace(" ", "").Replace("", "");
                string[] temparyip = result.Split(",;".ToCharArray());
                for (int i = 0; i < temparyip.Length; i++)
                {
                    if (IsIPAddress(temparyip[i]) && temparyip[i].Substring(0, 3) != "10." && temparyip[i].Substring(0, 7) != "192.168" && temparyip[i].Substring(0, 7) != "172.16.")
                    {
                        return temparyip[i];//找到不是内网的地址
                    }
                }
            }
            else if (IsIPAddress(result)) //代理即是IP格式
                return result;
            else
                result = null;//代理中的内容 非IP,取IP
        }
    }
    string IpAddress =
    (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null &&
    HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty) ? HttpContext.Current.Request.ServerVariables
    ["HTTP_X_FORWARDED_FOR"] : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    if (null == result || result == String.Empty)
        result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    if (result == null || result == String.Empty)
        result = HttpContext.Current.Request.UserHostAddress;
    return result;
}
/// <summary>
/// ip判断
/// </summary>
/// <param name="str1"></param>
/// <returns></returns>
private static bool IsIPAddress(string str1)
{
    if (str1 == null || str1 == string.Empty || str1.Length < 7 || str1.Length > 15)
        return false;
    string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$";
    Regex regex = new Regex(regformat, RegexOptions.IgnoreCase);
    return regex.IsMatch(str1);
}
时间: 2024-10-08 10:29:10

获取客户端的IP地址的相关文章

服务器端获取客户端的IP地址(当客户端调用由Axis开发的WebService)

一.前言 由于项目中一个小的模块需要获取客户端的IP地址以保证安全调用webservice接口,项目中客户端使用C#编写,服务器端使用Java编写,服务器端与客户端采用Axis开发的WebService进行通信.服务器端维护IP白名单列表,只有IP地址在白名单中的客户端才可以成功调用到接口,获得服务. 二.代码清单 若要成功获取客户端IP地址,需要如下Jar包的支持. servlet-api.jar axis.jar axis2-kernel-1.6.2.jar 获取IP地址的具体代码如下: i

asp网络编程:ASP如何获取客户端真实IP地址

要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取.不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的IP.还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVari

socket.io获取客户端的IP地址(修正官方1.0.4版本BUG)

之前我有看过别人写的文章,说到如何获取客户端IP地址,代码如下: var io = require("socket.io").listen(server); io.sockets.on("connection", function (socket) { var address = socket.handshake.address; console.log("New connection from " + address.address + &qu

获取客户端真实IP地址

1.需要引入log4j-1.2.14.jar package org.ydd.test; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; /** * @author coco * @version * 获取IP4 */ public class IP4 { private static final Logger log = Log

java获取客户端请求ip地址

public static String getIpAddr(HttpServletRequest request) { if (null == request) { return null; } String proxs[] = { "X-Forwarded-For", "Proxy-Client-IP", "WL-Proxy-Client-IP", "HTTP_CLIENT_IP", "HTTP_X_FORWAR

获取客户端的ip地址与mac地址总结

最近刚完成的一个模块中,需要获取系统客户端的IP地址与物理地址(MAC地址). 1. 获取的本机IP与MAC是服务器的,而非客户端的→_→ 通过JAVA获取,本机的IP地址与MAC地址,使用如下代码即可完成: package com.howin.util; import java.net.*; public class Ipconfig { public static void main(String[] args) throws Exception { // TODO Auto-generat

java 获取客户端的ip地址

import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHostException; /** * 获取访问接口的客户端的ip地址 * @author remainsu * @version 1.0 2019-05-11 * * 使用说明: * 1. Controller中加入HttpServletRequest参数(HttpServletRequest re

使用Java技术获取客户端的IP地址

今天发文一篇较为简单,且文档满天飞的获取IP地址的java代码,可能很多小白们不一定能找到完整兼容的方法,故在此送给小白们一份干货. 此文也是为了接下来的时间里,我将会写一篇使用HTML5技术扫描PC二维码且在WAP端实现可上传图片或视频的文档,这里会运用到根据参数动态生成二维码和传输文件的技术,也会应用到ip及端口的东西. 下面是运用java代码判断当前客服端IP地址的逻辑: private String getInternetIp(HttpServletRequest request) {

在unity 脚本中获取客户端的IP地址

需要using System.Net.NetworkInformation;原理就是获取网卡的信息. //下面这段代码是我在百度贴吧找来的,经检验是正确的 string userIp = ""; NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces(); ; foreach (NetworkInterface adapter in adapters) { if (adapter.Supports(N