接口获取客户端IP
string IpAdd = context.Request.ServerVariables.Get("Remote_Addr").ToString();
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")//第二种方式
判断是否是正确的Ip地址
正则篇:
public static bool IsIP(string ip)
{
//判断是否为IP
return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
}
c#内置IPAdd方法篇:
string ipStr=“192.168.0.2”;
IPAddress ip;
if(IPAddress.TryParse(ipStr,out ip))
{
MessageBox.Show(“可以解析”);
}
else
{
MessageBox.Show(“未知Ip”);
}
public IPAddTable GetIpAdd(string IpSeach)
{
long Ip2FloatData = Ip2Float(IpSeach);
string sql = $@"SELECT [Id],[IPCodeStart],[IPCodeEnd],[IPAddStart],[IPAddEnd],[BigProvName],[CityName],[CityCode] FROM [IPAddTable] where {Ip2FloatData} between IPCodeStart and IPCodeEnd";
ResultMsg msg = new ResultMsg();
using (IDbConnection conn = new GetConn().GetConns())
{
IEnumerable<IPAddTable> IpinfoList;
IpinfoList = conn.Query<IPAddTable>(sql);
if (IpinfoList != null)
{
return IpinfoList.FirstOrDefault();
}
else
{
return null;
}
}
}
public long Ip2Float(string IP)
{
char[] separator = new char[] { '.' };
string[] items = IP.Split(separator);
return long.Parse(items[0]) << 24
| long.Parse(items[1]) << 16
| long.Parse(items[2]) << 8
| long.Parse(items[3]);
}