当前位置:网站首页>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 .
边栏推荐
- Mysql database -dql
- Pointcut expression
- (Supplement) double pointer topic
- 斑马识别成狗,AI犯错的原因被斯坦福找到了
- Golang anonymous function use
- [sword finger offer] 58 - I. flip the word order
- Daily code 300 lines learning notes day 10
- Eleven requirements for test management post
- CC2530 common registers for ADC single channel conversion
- Extraction of the same pointcut
猜你喜欢
随机推荐
关于学习Qt编程的好书精品推荐
浅谈拉格朗日插值及其应用
Explore Netease's large-scale automated testing solutions see here see here
How to promote cross department project collaboration | community essay solicitation
nifi从入门到实战(保姆级教程)——flow
function overloading
【剑指 Offer】58 - II. 左旋转字符串
Client does not support authentication protocol requested by server; consider upgrading MySQL client
What is the difference between 14Cr1MoR container plate and 14Cr1MoR (H)? Chemical composition and performance analysis of 14Cr1MoR
Extraction of the same pointcut
Is it safe to open a stock account by mobile registration? Does it need money to open an account
Difference between JSON and bson
Visual SLAM algorithms: a survey from 2010 to 2016
Add color to the interface automation test framework and realize the enterprise wechat test report
什么是质押池,如何进行质押呢?
比亚迪、长城混动市场再“聚首”
Idea configuration plug-in
[combinatorics] non descending path problem (number of non descending paths with constraints)
Capacités nécessaires à l'analyse des données
UCORE overview