endIpOff = Convert.ToInt64(buff[4].ToString()) + Convert.ToInt64(buff[5].ToString()) *256+ Convert.ToInt64(buff[6].ToString()) *256*256;
startIp = Convert.ToInt64(buff[0].ToString()) + Convert.ToInt64(buff[1].ToString()) *256+ Convert.ToInt64(buff[2].ToString()) *256*256+ Convert.ToInt64(buff[3].ToString()) *256*256*256;
return startIp;
}// 获取结束IP#region 获取结束IP privatelong GetEndIp()
{
//objfs.Seek(endIpOff,SeekOrigin.Begin); objfs.Position = endIpOff;
byte[] buff =new Byte[5];
objfs.Read(buff, 0, 5);
this.endIp = Convert.ToInt64(buff[0].ToString()) + Convert.ToInt64(buff[1].ToString()) *256+ Convert.ToInt64(buff[2].ToString()) *256*256+ Convert.ToInt64(buff[3].ToString()) *256*256*256;
this.countryFlag = buff[4];
returnthis.endIp;
}//获取国家/区域偏移量#region 获取国家/区域偏移量 privatestring GetCountry()
{
switch (this.countryFlag)
{
case1:
case2:
this.country = GetFlagStr(this.endIpOff +4);
this.local = (1==this.countryFlag) ?"" : this.GetFlagStr(this.endIpOff +8);
break;
default:
this.country =this.GetFlagStr(this.endIpOff +4);
this.local =this.GetFlagStr(objfs.Position);
break;
}return"";
}//获取国家/区域字符串#region 获取国家/区域字符串 privatestring GetFlagStr(long offSet)
{
int flag =0;
byte[] buff =new Byte[3];
while (1==1)
{
objfs.Position = offSet;
flag = objfs.ReadByte();
if (flag ==1|| flag ==2)
{
objfs.Read(buff, 0, 3);
if (flag ==2)
{
this.countryFlag =2;
this.endIpOff = offSet -4;
}
offSet = Convert.ToInt64(buff[0].ToString()) + Convert.ToInt64(buff[1].ToString()) *256+ Convert.ToInt64(buff[2].ToString()) *256*256;
}else{
break;
}
}if (offSet <12)
return"";
objfs.Position = offSet;
return GetStr();
}//GetStr#region GetStr privatestring GetStr()
{
byte lowC =0;
byte upC =0;
string str ="";
byte[] buff =newbyte[2];
while (1==1)
{
lowC = (Byte)objfs.ReadByte();
if (lowC ==0)
break;
if (lowC >127)
{
upC = (byte)objfs.ReadByte();
buff[0] = lowC;
buff[1] = upC;
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("GB2312");
str += enc.GetString(buff);
}else{
str += (char)lowC;
}
}return str;
}publicstring IPLocation(string ip)
{
this.ip = ip;
this.QQwry();
if (this.country.Trim().Contains(this.local.Trim()))
returnthis.country.Trim();
returnthis.country.Trim() +this.local.Trim();
}
}
复制代码 代码如下:
string ip="123.81.176.99";
IPScanner ipscaner = new IPScanner();
ipscaner.IPLocation(ip);
string strIPAddress=ipscaner.Country;