当前位置:网站首页>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 .
边栏推荐
- How to promote cross department project collaboration | community essay solicitation
- 8个酷炫可视化图表,快速写出老板爱看的可视化分析报告
- Hands on in-depth learning notes (XIV) 3.7 Simple implementation of softmax regression
- [combinatorial mathematics] counting model, common combinatorial numbers and combinatorial identities**
- [sword finger offer] 58 - I. flip the word order
- 13mnnimo5-4 German standard steel plate 13MnNiMo54 boiler steel 13MnNiMo54 chemical properties
- (补)双指针专题
- LeetCode 1656. Design ordered flow
- Kotlin学习快速入门(7)——扩展的妙用
- NSQ source code installation and operation process
猜你喜欢
word 退格键删除不了选中文本,只能按delete
[combinatorics] non descending path problem (number of non descending paths with constraints)
网络安全web渗透技术
Web crawler knowledge day03
CC2530 common registers for ADC single channel conversion
关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM
Google Earth engine (GEE) - daymet v4: daily surface weather data set (1000m resolution) including data acquisition methods for each day
What material is sa537cl2? Analysis of mechanical properties of American standard container plate
Unreal_ Datatable implements ID self increment and sets rowname
There are several APIs of airtest and poco that are easy to use wrong in "super". See if you have encountered them
随机推荐
爱可可AI前沿推介(7.3)
What is the material of 13mnnimor? 13mnnimor steel plate for medium and low temperature pressure vessels
Shentong express expects an annual loss of nearly 1billion
Leetcode binary search tree
Golang anonymous function use
UCORE overview
RF Analyze Demo搭建 Step by Step
Informatics Olympiad all in one YBT 1175: divide by 13 | openjudge noi 1.13 27: divide by 13
智慧之道(知行合一)
MySQL user management
【剑指 Offer 】57 - II. 和为s的连续正数序列
What material is sa537cl2? Analysis of mechanical properties of American standard container plate
斑馬識別成狗,AI犯錯的原因被斯坦福找到了
【LeetCode】94. Middle order traversal of binary tree
[Jianzhi offer] 58 - ii Rotate string left
MySQL Basics
Summary of three methods of PHP looping through arrays list (), each (), and while
13mnnimo5-4 German standard steel plate 13MnNiMo54 boiler steel 13MnNiMo54 chemical properties
于文文、胡夏等明星带你玩转派对 皮皮APP点燃你的夏日
What material is sa537cl1? Sa537cl1 corresponds to the national standard material