当前位置:网站首页>How to judge the region of an IP through C?
How to judge the region of an IP through C?
2022-07-03 16:47:00 【Dotnet cross platform】
Consultation area
RC1140
How to use C# Judge a certain IP Region ? So I can make statistics easily .
Answer area
Jaimes
With the help of a third party API Interface , Refer to the website :https://ipapi.co/8.8.8.8/country/
, C# The code is as follows :
using System;
using System.Net;
using System.IO;
using System.Text;
public class Program
{
public static void Main()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://ipapi.co/8.8.8.8/country/");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
var reader = new System.IO.StreamReader(response.GetResponseStream(), ASCIIEncoding.ASCII);
Console.WriteLine(reader.ReadToEnd());
}
}
Vlam
There is an offline IP Regional Library
, It can realize complete offline query , Download link :https://lite.ip2location.com/database/ip-country
Create a table and import
CREATE DATABASE ip2location
GO
USE ip2location
GO
CREATE TABLE [ip2location].[dbo].[ip2location_db1](
[ip_from] float NOT NULL,
[ip_to] float NOT NULL,
[country_code] nvarchar(2) NOT NULL,
[country_name] nvarchar(64) NOT NULL,
) ON [PRIMARY]
GO
CREATE INDEX [ip_from] ON [ip2location].[dbo].[ip2location_db1]([ip_from]) ON [PRIMARY]
GO
CREATE INDEX [ip_to] ON [ip2location].[dbo].[ip2location_db1]([ip_to]) ON [PRIMARY]
GO
BULK INSERT [ip2location].[dbo].[ip2location_db1]
FROM 'C:\[path to your CSV file]\IP2LOCATION-LITE-DB1.CSV'
WITH
(
FORMATFILE = 'C:\[path to your DB1.FMT file]\DB1.FMT'
)
GO
Code query
We have the database , Next we can use C# The query .
public class Form1 {
private void Form1_Load(object sender, System.EventArgs e) {
string ip = "8.8.8.8";
this.IP2Location(ip);
}
private void IP2Location(string myip) {
IPAddress address = null;
if (IPAddress.TryParse(myip, address)) {
byte[] addrBytes = address.GetAddressBytes();
this.LittleEndian(addrBytes);
UInt32 ipno = 0;
ipno = BitConverter.ToUInt32(addrBytes, 0);
string sql = "SELECT TOP 1 * FROM ip2location_db1 WHERE ip_to >= \'" + ipno.ToString() + "\'";
object conn = new SqlConnection("Server=yourserver;Database=yourdatabase;User Id=youruserid;Password=yourpassword;");
object comm = new SqlCommand(sql, conn);
SqlDataReader reader;
comm.Connection.Open();
reader = comm.ExecuteReader(CommandBehavior.CloseConnection);
int x = 0;
object sb = new StringBuilder(250);
if (reader.HasRows) {
if (reader.Read()) {
for (x = 0; (x <= (reader.FieldCount() - 1)); x++) {
sb.Append((reader.GetName(x) + (": " + (reader.GetValue(x) + "\r\n"))));
}
}
}
reader.Close();
MsgBox(sb.ToString());
}
}
private void LittleEndian(ref byte[] byteArr) {
if (BitConverter.IsLittleEndian) {
List<byte> byteList = new List<byte>(byteArr);
byteList.Reverse();
byteArr = byteList.ToArray();
}
}
}
Comment area
I didn't expect an offline version IP Address base
, This is good , To study the .
边栏推荐
- Top k questions of interview
- utfwry. Dat PHP, about ThinkPHP's method of IP location using utfwry address Library
- LeetCode 1657. Determine whether the two strings are close
- AcWing 第58 场周赛
- Hands on in-depth learning notes (XIV) 3.7 Simple implementation of softmax regression
- 【剑指 Offer 】57 - II. 和为s的连续正数序列
- 13mnnimo5-4 German standard steel plate 13MnNiMo54 boiler steel 13MnNiMo54 chemical properties
- 线程池执行定时任务
- 关于学习Qt编程的好书精品推荐
- 什么是质押池,如何进行质押呢?
猜你喜欢
13mnnimo5-4 German standard steel plate 13MnNiMo54 boiler steel 13MnNiMo54 chemical properties
斑馬識別成狗,AI犯錯的原因被斯坦福找到了
ucore概述
Mysql 将逗号隔开的属性字段数据由列转行
Mysql database DDL and DML
Netease UI automation test exploration: airtest+poco
CC2530 common registers for timer 1
Le zèbre a été identifié comme un chien, et la cause de l'erreur d'AI a été trouvée par Stanford
于文文、胡夏等明星带你玩转派对 皮皮APP点燃你的夏日
【LeetCode】94. Middle order traversal of binary tree
随机推荐
Mysql database DDL and DML
Interpretation of several important concepts of satellite antenna
[Jianzhi offer] 64 Find 1+2+... +n
深入理解 SQL 中的 Grouping Sets 语句
手机注册股票开户安全吗 开户需要钱吗
function overloading
Shentong express expects an annual loss of nearly 1billion
CC2530 common registers for port interrupts
Extraction of the same pointcut
PHP secondary domain name session sharing scheme
Netease UI automation test exploration: airtest+poco
"The NTP socket is in use, exiting" appears when ntpdate synchronizes the time
Leetcode binary search tree
What material is sa537cl2? Analysis of mechanical properties of American standard container plate
Using optimistic lock and pessimistic lock in MySQL to realize distributed lock
MySQL user management
Threejs Part 2: vertex concept, geometry structure
2022 love analysis · panoramic report of digital manufacturers of state-owned enterprises
数据分析必备的能力
[Jianzhi offer] 57 - ii Continuous positive sequence with sum s