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

主頁 > 知識庫 > 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顯示地理位置功能示例的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    午夜私人影院久久久久| 欧美日精品一区视频| 欧美亚洲综合网| 2023国产精华国产精品| 亚洲自拍与偷拍| 成人一区二区三区视频| 欧美一级免费观看| 一区二区三区中文在线| 成人性视频免费网站| 91精品国产免费久久综合| 一区二区三区影院| av电影在线观看完整版一区二区| 欧美一级精品大片| 日韩影院在线观看| 欧美午夜精品一区| 亚洲一区二区三区国产| 91一区二区三区在线观看| 欧美国产97人人爽人人喊| 国产在线一区二区| 日韩欧美国产麻豆| 免费一级片91| 91精品国产91久久久久久最新毛片| 一区二区三区日本| 日本丶国产丶欧美色综合| 亚洲婷婷综合久久一本伊一区| 国产老女人精品毛片久久| 精品日产卡一卡二卡麻豆| 日本中文在线一区| 91麻豆福利精品推荐| 中文字幕一区二区在线播放| 岛国精品在线播放| 亚洲欧洲av另类| 色综合亚洲欧洲| 亚洲午夜在线观看视频在线| 91激情五月电影| 亚洲一区在线播放| 欧美一区二区三区免费在线看 | 亚洲一区在线视频| 欧美最猛性xxxxx直播| 亚洲欧美色综合| 欧美性xxxxxxxx| 日韩在线卡一卡二| 欧美大肚乱孕交hd孕妇| 国产一区二区三区日韩 | 91精品麻豆日日躁夜夜躁| 午夜免费久久看| 日韩欧美成人午夜| 国产激情视频一区二区在线观看| 亚洲国产精品成人久久综合一区 | 欧美天堂一区二区三区| 亚洲成人精品影院| 欧美va亚洲va在线观看蝴蝶网| 国内精品伊人久久久久av影院 | 亚洲一区在线视频观看| 7777精品伊人久久久大香线蕉的 | 精品日产卡一卡二卡麻豆| 激情图片小说一区| 国产精品动漫网站| 欧美日韩综合在线免费观看| 蜜桃精品视频在线| 国产精品超碰97尤物18| 69p69国产精品| 国产99一区视频免费| 亚洲免费电影在线| 日韩色视频在线观看| 成人涩涩免费视频| 天堂精品中文字幕在线| 国产亚洲欧美一区在线观看| 91福利精品视频| 久久机这里只有精品| 国产精品国产自产拍在线| 69堂精品视频| 成人成人成人在线视频| 免费欧美日韩国产三级电影| 国产精品欧美一区喷水| 欧美一区二区三区四区高清| 99精品视频在线播放观看| 日日摸夜夜添夜夜添国产精品| 国产精品网站一区| 欧美一区二区三区在线电影| 91在线免费看| 国产精品亚洲视频| 男女男精品网站| 一区二区三区在线免费播放| 久久免费看少妇高潮| 欧美女孩性生活视频| www.66久久| 国产高清不卡一区二区| 日韩电影在线一区| 亚洲一级电影视频| 国产精品国产三级国产普通话三级| 欧美一卡二卡在线观看| 欧洲人成人精品| 99久久精品国产毛片| 国产成人av电影在线观看| 日本大胆欧美人术艺术动态| 亚洲午夜久久久久久久久电影院| 国产精品久久久一区麻豆最新章节| 欧美一级在线视频| 在线播放一区二区三区| 欧美影院一区二区| 日本韩国一区二区三区| jlzzjlzz欧美大全| 成人av在线播放网站| 国产大片一区二区| 国产高清在线精品| 国产一区999| 国产酒店精品激情| 国产一区二区0| 国产盗摄精品一区二区三区在线| 韩国三级电影一区二区| 激情国产一区二区| 久久99精品久久久久久| 九九视频精品免费| 久久99精品视频| 精品制服美女丁香| 国产精品18久久久久久久久久久久| 激情综合亚洲精品| 国产乱码精品一区二区三区忘忧草| 精东粉嫩av免费一区二区三区| 美国十次综合导航| 国产一区二区三区四区五区美女| 国产自产2019最新不卡| 国产成人免费视频网站高清观看视频| 狠狠久久亚洲欧美| 成人久久18免费网站麻豆| 91色视频在线| 欧美日韩在线亚洲一区蜜芽| 欧美日韩高清一区二区不卡| 91麻豆精品国产91久久久| 欧美成人精品福利| 国产精品午夜在线观看| 亚洲婷婷综合色高清在线| 亚洲第一狼人社区| 蜜臀av一区二区| 国产成人av一区二区三区在线观看| 国产91精品一区二区| 99久久久无码国产精品| 欧美日韩免费观看一区三区| 日韩亚洲国产中文字幕欧美| www成人在线观看| 亚洲素人一区二区| 日韩精品成人一区二区在线| 国产在线一区二区| 99精品视频中文字幕| 5566中文字幕一区二区电影| 精品国产成人系列| 亚洲人成网站精品片在线观看| 图片区小说区区亚洲影院| 国产黄色精品视频| 欧美精品一二三四| 欧美国产乱子伦| 日本视频一区二区三区| 成人精品国产免费网站| 91精品一区二区三区久久久久久 | 日韩女优毛片在线| 国产精品沙发午睡系列990531| 亚洲一区二区成人在线观看| 国产在线视频一区二区| 欧美性欧美巨大黑白大战| 国产丝袜在线精品| 五月天亚洲精品| av在线一区二区三区| 精品久久国产字幕高潮| 亚洲综合一区在线| 懂色av一区二区三区蜜臀| 91精品蜜臀在线一区尤物| 综合精品久久久| 国产成人精品www牛牛影视| 欧美高清你懂得| 亚洲黄色尤物视频| 国产成人aaa| 日韩精品最新网址| 天天操天天干天天综合网| 99精品1区2区| 国产日本欧洲亚洲| 开心九九激情九九欧美日韩精美视频电影| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美电视剧免费观看| 亚洲第一福利视频在线| 91色综合久久久久婷婷| 欧美国产日韩精品免费观看| 九九九久久久精品| 欧美一区二区女人| 水野朝阳av一区二区三区| 色呦呦网站一区| 亚洲丝袜自拍清纯另类| 成人av影视在线观看| 欧美国产在线观看| 国产米奇在线777精品观看| 日韩欧美中文一区| 欧美aaaaaa午夜精品| 91麻豆精品国产| 免费xxxx性欧美18vr| 日韩免费电影网站| 乱一区二区av| 精品国产91乱码一区二区三区 | 欧美激情一区二区三区蜜桃视频| 精品一区二区三区在线播放视频| 日韩一级精品视频在线观看|