亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > c#實現(xiàn)根據(jù)網(wǎng)絡(luò)IP顯示地理位置功能示例

c#實現(xiàn)根據(jù)網(wǎng)絡(luò)IP顯示地理位置功能示例

熱門標(biāo)簽:戶外地圖標(biāo)注軟件手機(jī)哪個好用 萊蕪?fù)夂綦婁N機(jī)器人價格 長春呼叫中心外呼系統(tǒng)哪家好 電銷語音自動機(jī)器人 凱立德導(dǎo)航官網(wǎng)地圖標(biāo)注 鄭州400電話辦理 聯(lián)通 五常地圖標(biāo)注 智能電話營銷外呼系統(tǒng) 地圖標(biāo)注和認(rèn)領(lǐng)
用戶信息表,是大多數(shù)系統(tǒng)都有的。我們也知道,通常都會有類似 注冊IP 和 最后登錄IP 這兩個的字段,來存儲用戶注冊時候的IP地址和最后登錄的IP的地址。

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

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

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 = "本機(jī)內(nèi)部環(huán)回地址", 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 = "網(wǎng)絡(luò)保留地址", 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 文件,如下:
復(fù)制代碼 代碼如下:

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的用戶信息,如下:
復(fù)制代碼 代碼如下:

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地址段了。
運行一下,看看效果吧.
您可能感興趣的文章:
  • 通過百度地圖獲取公交線路的站點坐標(biāo)的js代碼
  • 百度地圖api應(yīng)用標(biāo)注地理位置信息(js版)
  • 如何在一個頁面顯示多個百度地圖
  • 利用百度地圖JSAPI生成h7n9禽流感分布圖實現(xiàn)代碼
  • 用Android Location獲取當(dāng)前地理位置的方法
  • Android下如何使用百度地圖sdk
  • JS中引用百度地圖并將百度地圖的logo和信息去掉
  • java調(diào)用百度定位api服務(wù)獲取地理位置示例
  • c#通過ip獲取地理信息
  • ios百度地圖的使用(普通定位、反地理編碼)

標(biāo)簽:西寧 衢州 宣城 福州 西藏 湖州 紅河 岳陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《c#實現(xiàn)根據(jù)網(wǎng)絡(luò)IP顯示地理位置功能示例》,本文關(guān)鍵詞  實現(xiàn),根據(jù),網(wǎng)絡(luò),顯示,地理位置,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《c#實現(xiàn)根據(jù)網(wǎng)絡(luò)IP顯示地理位置功能示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于c#實現(xiàn)根據(jù)網(wǎng)絡(luò)IP顯示地理位置功能示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    韩国三级视频在线观看| 九九精品久久久久久久久| 国产视频一区二区在线播放| 亚洲天堂在线播放| 国产成a人片在线观看视频| 成人高清免费| 亚洲精品影院| 国产视频一区二区三区四区| 国产网站免费视频| 日韩专区在线播放| 亚洲天堂免费观看| 黄色短视屏| 黄色免费网站在线| 午夜在线影院| 青青久久精品| 一级女性大黄生活片免费| 日韩女人做爰大片| 国产高清视频免费观看| 免费一级生活片| 欧美一级视| 韩国毛片 免费| 久久久成人网| 美女免费毛片| 久久精品成人一区二区三区| 国产激情一区二区三区| 二级特黄绝大片免费视频大片| 999精品在线| 国产福利免费观看| 午夜久久网| 台湾美女古装一级毛片| 午夜精品国产自在现线拍| 天天色色网| 国产视频一区二区三区四区| 日韩av片免费播放| 精品久久久久久影院免费| 欧美另类videosbestsex高清| 精品久久久久久中文字幕一区| 日本特黄特黄aaaaa大片| 日本免费乱理伦片在线观看2018| 精品国产三级a| 日韩在线观看免费| 国产高清视频免费观看| 亚欧视频在线| 可以免费看毛片的网站| 韩国三级视频网站| 国产视频久久久| 日韩中文字幕在线亚洲一区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 免费国产在线观看| 久久久久久久网| 欧美大片aaaa一级毛片| 午夜在线观看视频免费 成人| 沈樵在线观看福利| 日本伦理黄色大片在线观看网站| 国产欧美精品| 麻豆午夜视频| 久久成人性色生活片| 精品国产一区二区三区久久久狼 | 国产成人精品综合在线| 日韩一级精品视频在线观看| 精品久久久久久中文字幕2017| 四虎影视久久| 亚洲精品影院| 可以免费看毛片的网站| 国产一区二区精品久久91| 日韩一级精品视频在线观看| 九九精品影院| 日本伦理网站| 精品毛片视频| 黄色免费网站在线| 久久久久久久男人的天堂| 台湾毛片| 香蕉视频亚洲一级| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产视频一区在线| 日韩欧美一二三区| 国产伦久视频免费观看视频| 成人免费高清视频| 深夜做爰性大片中文| 黄色免费网站在线| 久久久久久久网| 日韩专区第一页| 国产成人女人在线视频观看| 日韩在线观看视频网站| 欧美1区| 欧美电影免费| 亚洲 男人 天堂| 精品视频在线观看一区二区 | 黄视频网站在线观看| 九九精品久久久久久久久| 国产一级强片在线观看| 韩国三级香港三级日本三级la| 97视频免费在线观看| 成人影视在线播放| 国产成人欧美一区二区三区的| 高清一级毛片一本到免费观看| 一级女性全黄生活片免费| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 韩国三级视频网站| 欧美激情一区二区三区在线| 色综合久久手机在线| 色综合久久天天综线观看| 国产不卡在线看| 国产网站免费在线观看| 一a一级片| 91麻豆tv| 亚欧成人乱码一区二区| 九九免费高清在线观看视频| 国产成人精品影视| 日本特黄特色aaa大片免费| 日韩一级精品视频在线观看| 精品国产一区二区三区久久久蜜臀 | 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 99久久精品费精品国产一区二区| 国产视频久久久久| 欧美另类videosbestsex高清| 色综合久久天天综合| 免费一级片网站| 日韩在线观看视频网站| 国产一区二区精品久久91| 尤物视频网站在线| 黄视频网站免费观看| 韩国三级香港三级日本三级| 欧美另类videosbestsex高清| 精品国产一区二区三区久久久蜜臀 | 亚洲不卡一区二区三区在线| 香蕉视频三级| a级毛片免费全部播放| 高清一级片| 成人在免费观看视频国产| 99色视频在线| 色综合久久天天综合绕观看| 九九精品久久| 国产一区二区精品久| 亚洲女人国产香蕉久久精品 | 精品视频在线看 | 欧美一级视频免费| 国产亚洲精品aaa大片| 亚欧乱色一区二区三区| 黄视频网站免费| 国产91精品系列在线观看| 国产一区二区精品久| 国产成人精品一区二区视频| 亚洲精品永久一区| 午夜欧美福利| 99色精品| 精品视频在线观看免费| 成人影院久久久久久影院| 欧美日本韩国| 国产亚洲精品aaa大片| 久久久久久久免费视频| 四虎影视库| 欧美另类videosbestsex久久| 久久精品免视看国产成人2021| 九九免费高清在线观看视频| 国产网站免费视频| 成人在免费观看视频国产| 精品久久久久久中文| 一a一级片| 亚欧视频在线| 日韩男人天堂| 91麻豆精品国产自产在线观看一区 | 二级特黄绝大片免费视频大片| 黄色福利片| 欧美日本免费| 二级片在线观看| 欧美1区| 青草国产在线| 99久久精品国产免费| 黄色免费网站在线| 久久精品免视看国产成人2021| 久久成人性色生活片| 日本在线不卡视频| 韩国毛片 免费| 日韩一级黄色| 91麻豆国产福利精品| 精品视频一区二区三区| 一级毛片视频免费| 可以在线看黄的网站| 91麻豆精品国产自产在线| 国产精品1024永久免费视频 | 国产成人精品综合| 91麻豆国产级在线| 亚洲精品影院一区二区| 九九干| 成人免费观看视频| 国产一区精品| 欧美一级视| 亚洲女初尝黑人巨高清在线观看| 国产不卡在线播放| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产网站麻豆精品视频| 亚飞与亚基在线观看| 欧美激情一区二区三区视频高清| 国产伦精品一区二区三区无广告| 日韩中文字幕在线播放| 成人在激情在线视频| 精品视频在线观看一区二区三区| 成人高清免费| 九九精品影院|