校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > c#實現根據網絡IP顯示地理位置功能示例

c#實現根據網絡IP顯示地理位置功能示例

熱門標簽:戶外地圖標注軟件手機哪個好用 萊蕪外呼電銷機器人價格 長春呼叫中心外呼系統哪家好 電銷語音自動機器人 凱立德導航官網地圖標注 鄭州400電話辦理 聯通 五常地圖標注 智能電話營銷外呼系統 地圖標注和認領
用戶信息表,是大多數系統都有的。我們也知道,通常都會有類似 注冊IP 和 最后登錄IP 這兩個的字段,來存儲用戶注冊時候的IP地址和最后登錄的IP的地址。

獲取這樣的地址,在后臺顯示 xxx.xxx.xxx.xxx 的地址段,讓人看到很不自然,根本就不知道具體地理位置。

現在我們就簡單的實現一下這個功能。
用到了讀取純真IP數據庫的公用組件QQWry.NET 這個組件,作者阿不。(謝謝他的共享)
還要去下載最新的純真IP地址庫,下載獲得QQWry.dat
最后請出Js中的小靚妞,jquery-1.3.1.js
新建Web項目AjaxIP,將QQWry.dat添加到App_Data下。
然后添加QQWry.NET的組件類,如下:
復制代碼 代碼如下:

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using System.Net;
using System.Net.Sockets;
namespace AjaxIP
{
public class IPLocation
{
public string IP { get; set; }
public string Country { get; set; }
public string Local { get; set; }
}
public class QQWryLocator
{
static Encoding encoding = Encoding.GetEncoding("GB2312");
private byte[] data;
int firstStartIpOffset;
int lastStartIpOffset;
int ipCount;
public int Count { get { return ipCount; } }
public QQWryLocator(string dataPath)
{
using (FileStream fs = new FileStream(dataPath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
data = new byte[fs.Length];
fs.Read(data, 0, data.Length);
}
firstStartIpOffset = (int)data[0] + (((int)data[1]) 8) + (((int)data[2]) 16) + (((int)data[3]) 24);
lastStartIpOffset = (int)data[4] + (((int)data[5]) 8) + (((int)data[6]) 16) + (((int)data[7]) 24);
ipCount = (lastStartIpOffset - firstStartIpOffset) / 7 + 1;
if (ipCount = 1)
{
throw new ArgumentException("ip FileDataError");
}
}
public static uint IpToInt(string ip)
{
//string[] strArray = ip.Split('.');
//return (uint.Parse(strArray[0]) 24) + (uint.Parse(strArray[1]) 16) + (uint.Parse(strArray[2]) 8) + uint.Parse(strArray[0]);
//return (uint)IPAddress.HostToNetworkOrder((int)(IPAddress.Parse(ip).Address));
byte[] bytes = IPAddress.Parse(ip).GetAddressBytes();
return (uint)bytes[3] + (((uint)bytes[2]) 8) + (((uint)bytes[1]) 16) + (((uint)bytes[0]) 24);
}
public static string IntToIP(uint ip_Int)
{
return new IPAddress(ip_Int).ToString();
}
public IPLocation Query(string ip)
{
IPAddress address = IPAddress.Parse(ip);
if (address.AddressFamily != AddressFamily.InterNetwork)
{
throw new ArgumentException("不支持非IPV4的地址");
}
if (IPAddress.IsLoopback(address))
{
return new IPLocation() { IP = ip, Country = "本機內部環回地址", Local = string.Empty };
}
uint intIP = (uint)IPAddress.HostToNetworkOrder((int)address.Address);
//if ((((intIP >= IpToInt("0.0.0.0")) (intIP = IpToInt("2.255.255.255"))) || ((intIP >= IpToInt("64.0.0.0")) (intIP = IpToInt("126.255.255.255")))) ||
//((intIP >= IpToInt("58.0.0.0")) (intIP = IpToInt("60.255.255.255"))))
//if (intIP = 50331647 || (intIP >= 1073741824 intIP = 2130706431) || (intIP >= 973078528 intIP = 1023410175))
//{
// return new IPLocation() { IP = ip, Country = "網絡保留地址", Local = string.Empty };
//}
IPLocation ipLocation = new IPLocation() { IP = ip };
uint right = (uint)ipCount;
uint left = 0;
uint middle = 0;
uint startIp = 0;
uint endIpOff = 0;
uint endIp = 0;
int countryFlag = 0;
while (left (right - 1))
{
middle = (right + left) / 2;
startIp = GetStartIp(middle, out endIpOff);
if (intIP == startIp)
{
left = middle;
break;
}
if (intIP > startIp)
{
left = middle;
}
else
{
right = middle;
}
}
startIp = GetStartIp(left, out endIpOff);
endIp = GetEndIp(endIpOff, out countryFlag);
if ((startIp = intIP) (endIp >= intIP))
{
string local;
ipLocation.Country = GetCountry(endIpOff, countryFlag, out local);
ipLocation.Local = local;
}
else
{
ipLocation.Country = "未知";
ipLocation.Local = string.Empty;
}
return ipLocation;
}
private uint GetStartIp(uint left, out uint endIpOff)
{
int leftOffset = (int)(firstStartIpOffset + (left * 7));
endIpOff = (uint)data[4 + leftOffset] + (((uint)data[5 + leftOffset]) 8) + (((uint)data[6 + leftOffset]) 16);
return (uint)data[leftOffset] + (((uint)data[1 + leftOffset]) 8) + (((uint)data[2 + leftOffset]) 16) + (((uint)data[3 + leftOffset]) 24);
}
private uint GetEndIp(uint endIpOff, out int countryFlag)
{
countryFlag = data[4 + endIpOff];
return (uint)data[endIpOff] + (((uint)data[1 + endIpOff]) 8) + (((uint)data[2 + endIpOff]) 16) + (((uint)data[3 + endIpOff]) 24);
}
/// summary>
/// Gets the country.
/// /summary>
/// param name="endIpOff">The end ip off./param>
/// param name="countryFlag">The country flag./param>
/// param name="local">The local./param>
/// returns>country/returns>
private string GetCountry(uint endIpOff, int countryFlag, out string local)
{
string country = string.Empty;
uint offset = endIpOff + 4;
switch (countryFlag)
{
case 1:
case 2:
country = GetFlagStr(ref offset, ref countryFlag, ref endIpOff);
offset = endIpOff + 8;
local = (1 == countryFlag) ? string.Empty : GetFlagStr(ref offset, ref countryFlag, ref endIpOff);
break;
default:
country = GetFlagStr(ref offset, ref countryFlag, ref endIpOff);
local = GetFlagStr(ref offset, ref countryFlag, ref endIpOff);
break;
}
return country;
}
private string GetFlagStr(ref uint offset, ref int countryFlag, ref uint endIpOff)
{
int flag = 0;
while (true)
{
flag = data[offset];
//沒有重定向
if (flag != 1 flag != 2)
{
break;
}
if (flag == 2)
{
countryFlag = 2;
endIpOff = offset - 4;
}
offset = (uint)data[1 + offset] + (((uint)data[2 + offset]) 8) + (((uint)data[3 + offset]) 16);
}
if (offset 12)
{
return string.Empty;
}
return GetStr(ref offset);
}
/// summary>
/// 讀取字符串...
/// /summary>
/// param name="offset">/param>
/// returns>/returns>
private string GetStr(ref uint offset)
{
byte lowByte = 0;
byte highByte = 0;
StringBuilder stringBuilder = new StringBuilder(16);
while (true)
{
lowByte = data[offset++];
if (lowByte == 0)
{
return stringBuilder.ToString();
}
if (lowByte > 0x7f)
{
highByte = data[offset++];
if (highByte == 0)
{
return stringBuilder.ToString();
}
stringBuilder.Append(encoding.GetString(new byte[] { lowByte, highByte }));
}
else
{
stringBuilder.Append((char)lowByte);
}
}
}
}
}

再來新建 IPSearch.ashx 文件,如下:
復制代碼 代碼如下:

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
namespace AjaxIP
{
/// summary>
/// IP查詢 的摘要說明
/// /summary>
public class IPSearch : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string ip = context.Request["ip"];
string ipFilePath = @"\App_Data\QQWry.dat";
QQWryLocator QQWry = new QQWryLocator(ipFilePath);
IPLocation loc = QQWry.Query(ip);
context.Response.Write(string.Format("{0} {1}",loc.Country,loc.Local));
}
public bool IsReusable
{
get
{
return false;
}
}
}
}

最后在Default.aspx頁面寫下,js和有IP的用戶信息,如下:
復制代碼 代碼如下:

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml" >
head runat="server">
title>/title>
script language="javascript" src="Js/jquery-1.3.1.js">/script>
script language="javascript">
$(document).ready(function() {
$("#tb tr").each(function() {
var obj = $(this).children("td:eq(2)");
SearchIP(obj);
});
})
function SearchIP(obj) {
$.ajax({
type: "GET",
url: "IPSearch.ashx?ip=" + obj.text(),
success: function(data) {
obj.text(data);
}
});
}
/script>
/head>
body>
form id="form1" runat="server">
div>
table id="tb" style="width:100%;">
thead>
th>321321/th>
th>321321/th>
th>321321/th>
/thead>
tr>
td>
OMEGA/td>
td>
0/td>
td>
122.229.191.8/td>
/tr>
tr>
td>
荒年/td>
td>
900,000/td>
td>
110.87.98.30/td>
/tr>
tr>
td>
寒妃/td>
td>
1,854,257,979/td>
td>
220.188.193.72/td>
/tr>
tr>
td>
哈小土/td>
td>
600,100/td>
td>
220.188.193.72/td>
/tr>
tr>
td>
化妝造型/td>
td>
400,100/td>
td>
220.188.193.72/td>
/tr>
/table>
/div>
/form>
/body>
/html>

這樣我們的后臺用戶信息不再是不友好的IP地址段了。
運行一下,看看效果吧.
您可能感興趣的文章:
  • 通過百度地圖獲取公交線路的站點坐標的js代碼
  • 百度地圖api應用標注地理位置信息(js版)
  • 如何在一個頁面顯示多個百度地圖
  • 利用百度地圖JSAPI生成h7n9禽流感分布圖實現代碼
  • 用Android Location獲取當前地理位置的方法
  • Android下如何使用百度地圖sdk
  • JS中引用百度地圖并將百度地圖的logo和信息去掉
  • java調用百度定位api服務獲取地理位置示例
  • c#通過ip獲取地理信息
  • ios百度地圖的使用(普通定位、反地理編碼)

標簽:西寧 衢州 宣城 福州 西藏 湖州 紅河 岳陽

巨人網絡通訊聲明:本文標題《c#實現根據網絡IP顯示地理位置功能示例》,本文關鍵詞  實現,根據,網絡,顯示,地理位置,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《c#實現根據網絡IP顯示地理位置功能示例》相關的同類信息!
  • 本頁收集關于c#實現根據網絡IP顯示地理位置功能示例的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久先锋影音av| 日韩电影一二三区| 国产乱码精品一品二品| 国产一区视频在线看| 亚洲黄色在线视频| 偷拍一区二区三区四区| 美女视频第一区二区三区免费观看网站| 最好看的中文字幕久久| 一区二区在线观看视频| 日韩av一区二| 成人av网在线| 欧美一级欧美一级在线播放| 精品国产一区二区三区不卡| 亚洲三级在线播放| 秋霞电影一区二区| 色综合久久久久久久| 欧美日韩综合在线免费观看| 国产日韩av一区| 日韩中文字幕1| 色婷婷综合久久久久中文一区二区| 日韩欧美在线一区二区三区| 欧美经典一区二区| 国内精品免费在线观看| 欧美久久久久久久久中文字幕| 国产精品传媒入口麻豆| 国产91高潮流白浆在线麻豆| 3d成人动漫网站| 日韩1区2区日韩1区2区| 欧美伊人精品成人久久综合97| 日本一区二区三区电影| 五月激情综合网| 精品视频免费在线| 亚洲成人在线免费| 欧美电影一区二区| 日韩精品国产精品| 日韩精品在线一区二区| 久久国产免费看| 国产亚洲成av人在线观看导航| 看电视剧不卡顿的网站| 久久精品一区四区| 99热精品国产| 日韩av电影免费观看高清完整版在线观看| 在线视频观看一区| 卡一卡二国产精品| 亚洲欧美影音先锋| 欧美老肥妇做.爰bbww| 免费成人在线影院| 国产精品久久三| 欧美一二三区在线观看| 不卡av在线网| 国产美女一区二区| 亚洲高清免费观看| 国产精品视频一区二区三区不卡| 色国产综合视频| 国产成人综合精品三级| 亚洲18影院在线观看| 亚洲精品久久久蜜桃| 亚洲一二三四区不卡| 3d成人动漫网站| 91在线视频在线| 国产永久精品大片wwwapp| 国产精品久久久久久久裸模| 欧美美女直播网站| 成人污污视频在线观看| 捆绑调教美女网站视频一区| 亚洲裸体在线观看| 亚洲天堂2014| 亚洲美女视频在线观看| 国产亚洲美州欧州综合国| 91精品国产一区二区三区| 欧洲精品在线观看| 在线日韩国产精品| 不卡一区二区在线| 99久久精品国产精品久久| 成人免费av资源| 色综合久久久久网| 日韩欧美卡一卡二| 欧美一区二区三区四区视频| 欧美三级视频在线播放| 欧美高清激情brazzers| 日韩一区二区在线播放| 国产视频一区在线观看| 国产精品美女久久久久av爽李琼| 国产丝袜欧美中文另类| 亚洲视频一二区| 久久精品av麻豆的观看方式| 91原创在线视频| 91精品欧美一区二区三区综合在| 久久久激情视频| 亚洲午夜精品网| 久久69国产一区二区蜜臀| 国产乱子伦一区二区三区国色天香| 国模冰冰炮一区二区| 色网站国产精品| 精品粉嫩aⅴ一区二区三区四区| 一区在线观看免费| 精品在线播放免费| 欧美一区二区三区成人| 最近日韩中文字幕| 99久久综合精品| 欧美国产激情二区三区| 国产精品影视在线观看| 日韩欧美不卡一区| 天天亚洲美女在线视频| 欧美影视一区二区三区| 亚洲欧美日韩电影| 99在线精品免费| 一区二区在线观看免费| 色综合亚洲欧洲| 亚洲色图欧美偷拍| 欧美三片在线视频观看| 亚洲成av人片一区二区三区| 一本色道久久综合亚洲91| 一区二区三区在线观看网站| 欧美日韩在线三级| 国产一区美女在线| 国产片一区二区| 91亚洲国产成人精品一区二三| 亚洲免费观看高清完整版在线观看 | 欧美一二区视频| 国产综合色精品一区二区三区| 国产三级欧美三级日产三级99| 大美女一区二区三区| 亚洲视频在线一区| 欧美日韩成人在线一区| 精品一区二区成人精品| 亚洲欧美日韩成人高清在线一区| 91麻豆精品国产综合久久久久久| 国产剧情一区二区| 日日夜夜精品免费视频| 国产精品久久久久一区| 日韩精品一区二区三区视频播放| 成人一区二区三区| 亚洲第一搞黄网站| 亚洲成人精品一区二区| 国产精品伦理在线| 久久综合久久鬼色中文字| 日韩欧美在线观看一区二区三区| eeuss鲁片一区二区三区在线看 | 久久久亚洲欧洲日产国码αv| 色综合中文综合网| 久久久久亚洲蜜桃| 日韩精品资源二区在线| 欧美日韩视频在线一区二区| 99国产精品视频免费观看| 国产成人小视频| 成人18视频日本| 国产99久久久久久免费看农村| 九一久久久久久| 蜜乳av一区二区三区| 视频一区中文字幕| 久草精品在线观看| 波多野结衣欧美| 91偷拍与自偷拍精品| 欧美日韩一卡二卡三卡| 日韩精品中文字幕一区二区三区| 日韩精品一区二| 国产欧美一区二区精品仙草咪| 国产精品国产成人国产三级| 亚洲一区二区三区影院| 精品一区二区三区日韩| 国产成人日日夜夜| 日本高清不卡在线观看| 欧美另类z0zxhd电影| 欧美高清一级片在线观看| 午夜视黄欧洲亚洲| 国产在线一区二区综合免费视频| 91色九色蝌蚪| 精品国产制服丝袜高跟| 亚洲图片激情小说| 国产精品一区2区| 欧美一激情一区二区三区| 亚洲视频在线观看一区| 蜜桃av一区二区在线观看| 欧美男生操女生| 亚洲国产视频a| 91蜜桃视频在线| 亚洲免费观看在线视频| 色呦呦国产精品| 亚洲欧洲日产国产综合网| 成人手机电影网| 国产欧美日韩在线视频| 国产成人亚洲综合a∨婷婷图片| 日韩精品在线看片z| 日韩av电影免费观看高清完整版 | 久久蜜桃香蕉精品一区二区三区| 日本不卡在线视频| 欧美日本国产视频| 另类欧美日韩国产在线| 欧美一区2区视频在线观看| 天天av天天翘天天综合网色鬼国产 | 婷婷夜色潮精品综合在线| 欧美网站大全在线观看| 精品一区二区三区在线视频| 精品三级av在线| 国产成人免费在线视频| 一区二区成人在线| 精品国产91九色蝌蚪| 欧美丝袜丝nylons| 日本中文在线一区|