C#使用MaxMind.GeoIP2数据库查询当前ip地址

GeoLite2-City.mmdb下载
因为比较简单,直接上代码,代码展示获取ip地址的国家和城市信息

using MaxMind.GeoIP2;
using MaxMind.GeoIP2.Model;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;namespace IP.Demo.API.Controllers
{public class HomeController : Controller  C#有偿Q群:927860652{List<string> ipList = new List<string>();public ActionResult Index(){InitIplist();var ips =  GetIPInfos();return View(ips);}private void InitIplist(){// 获取客户端请求的IP地址var ipAddress = Request.UserHostAddress;//湖南var hn = "175.6.68.41";//台湾var tw = "210.61.221.0";//香港var hk = "58.176.0.0";//伦敦var ld = "165.3.120.76";ipList.Add(hn);ipList.Add(ipAddress);ipList.Add(tw);ipList.Add(hk);ipList.Add(ld);}private List<IPInfo> GetIPInfos() {List < IPInfo > ips = new List<IPInfo>();var reader = new DatabaseReader("D:\\C#\\IP.Demo.API\\IP.Demo.API\\bin\\GeoLite2-City.mmdb");foreach (var ipAddress in ipList){try{// 解析IP地址var ipAddressObj = IPAddress.Parse(ipAddress);var response = reader.City(ipAddressObj);IPInfo iPInfo = new IPInfo();iPInfo.ip = ipAddress;iPInfo.Country = response.Country.Names["zh-CN"];try{iPInfo.City = response.City.Names["zh-CN"];}catch{iPInfo.City = response.MostSpecificSubdivision.Names["zh-CN"];}if (iPInfo.Country.Equals("中国")){if (iPInfo.City.Equals("台湾") || iPInfo.City.Equals("香港")) iPInfo.IsDomestic = false;else iPInfo.IsDomestic = true;}elseiPInfo.IsDomestic = false;if (iPInfo.Country.Equals("中华民国")) { iPInfo.Country = "中国"; iPInfo.City ="台湾"; }if (iPInfo.Country.Equals("香港")) { iPInfo.Country = "中国"; iPInfo.City = "香港"; }ips.Add(iPInfo);}catch {//处理本地127.0.0.1的请求IPInfo iPInfo = new IPInfo();iPInfo.ip = ipAddress;iPInfo.Country = "未知";iPInfo.City = "未知";iPInfo.IsDomestic = false;ips.Add(iPInfo);}}reader.Dispose();return ips;}}public class IPInfo {public string ip { get; set; }public string Country { get; set; }public string City { get; set; }public bool IsDomestic { get; set; }}
}

视图:

@using IP.Demo.API.Controllers;
@model List<IPInfo>@foreach (var IPInfo in Model)
{<div><p>IP: @IPInfo.ip</p><p>国家: @IPInfo.Country</p><p>城市: @IPInfo.City</p>@if (IPInfo.IsDomestic){<p>国内:</p>}else {<p>国内:</p>}</div>
}

效果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154732.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超级会员卡积分收银系统源码+会员卡+积分商城+多门店系统 附带完整的搭建教程

时代在发展&#xff0c;商家对于会员管理、积分管理、收银管理以及多门店管理的需求日益增长。为了满足这些需求&#xff0c;开发一款功能全面、易于使用和管理的超级会员卡积分收银系统变得至关重要。 以下是部分代码示例&#xff1a; 系统特色功能一览&#xff1a; 1.会员管…

STM32 -Bin/Hex文件格式解析

文章目录 1. 概述2. Hex文件2.1 格式解析2.2 数据类型2.3 举例解析2.4 合并两个Hex文件方法 3. Bin文件3.1 生成方式3.2 合并多个Bin文件方法3.3 打开Bin文件方式3.4 和Hex文件比较 4 总结 1. 概述 Hex文件&#xff1a;它是单片机和嵌入式工程编译输出的一种常见的目标文件格式…

https想访问本地部署的http://localhost接口

情况说明&#xff1a; 网址是https的&#xff0c;想访问java本地启的一个程序接口http://localhost:8089 解决办法 java程序加上

智能高效的转运机器人,为物流行业注入新动力

在当今社会&#xff0c;随着科技的不断发展&#xff0c;机器人已经逐渐融入到我们的生活中。其中&#xff0c;转运机器人作为物流行业的新秀&#xff0c;正以其高效、智能的特点&#xff0c;引起了广泛的关注。 转运机器人&#xff0c;是指能够自主进行物品搬运和运输的机器人…

如何利用CHATGPT写主题文章

问CHAT&#xff1a;新课标下畅言智慧课堂助力小学生量感培养&#xff0c;拟解决的关键问题 CHAT回复&#xff1a; 1. 确定智慧课堂在新课标下的正确应用方法&#xff1a;新课标对教育方法、内容等提出了新的要求&#xff0c;需要探讨如何将智慧课堂与新课标相结合&#xff0c;…

python-opencv 培训课程笔记(2)

python-opencv 培训课程笔记&#xff08;2&#xff09; 1.图像格式转换 先看一下cvtColor函数的例子 #默认加载彩图 pathrD:\learn\photo\cv\cat.jpg# imread(path,way) #way0 灰度图。way1 彩图 #默认彩图 imgcv2.imread(path) img_dogcv2.imread(path_dog) #图片格式的转化…

django restful framework序列化与反序列化

在前后端分离开发中&#xff0c;对于RESTfulAPI设置&#xff0c;一般需要将查询/更新数据以JSON方式进行返回。 序列化 Model.py from django.db import models class User(models.Model):username models.CharField(verbose_name用户名,max_length10)age models.IntegerF…

Cmake 生成器表达式

CMake生成器表达式 - 招财猫的博客 【精选】CMake I 生成器表达式_cmake生成器表达式-CSDN博客 例子 下面这行 就能把Lib的PDB FILEs安装提取出来安装到DESTINATION

VCP-DCV VMware vSphere,即将开课~想了解点击查看

VCP-DCV VMware vSphere 本周开课~ 想报名的必须提前预约啦 &#x1f447;&#x1f447;&#x1f447; 课程介绍 本课程重点讲授如何安装、配置和管理VMware vSphere 8.0&#xff08;包括VMware ESXi™ 8.0和VMware vCenter Server™ 8.0&#xff09; 本课程将帮助您做好…

火电安全事故vr模拟仿真培训强交互更真实

VR消防&#xff0c;利用VR虚拟现实技术&#xff0c;将VR和消防教育融合在一起达到寓教于乐的效果&#xff0c; VR消防教育是对于家中、校园内、大型商场、公司办公室等情景产品研发的消防安全培训类VR系统软件&#xff0c;根据互动体验、互动、视角实际操作、视听觉系统多度自然…

ubuntu18.04安装并运行ORB-SLAM2

查看版本号 lsb_release -a 换源 Ubuntu系统自带的源都是国外的网址&#xff0c;国内用户在使用的时候下载比较慢甚至无法获取&#xff0c;需要替换成国内的镜像源 备份源文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.old 打开文件 sudo gedit /etc/apt/so…

与数字伙伴共赏书海风光,拓世法宝AI智能数字人一体机打造现代图书馆新景象

纪录片《但是还有书籍》中这样形容图书馆“图书馆一个城市最安静的角落&#xff0c;却涌动着最活跃的思想。它保存着文明的火种&#xff0c;也滋养着未来的新知。它是一些人休憩心灵的桃花源&#xff0c;另一些人逃离世界的窗口。它是迷宫&#xff0c;是港口&#xff0c;也是乐…

2022最新版-李宏毅机器学习深度学习课程-P51 BERT的各种变体

之前讲的是如何进行fine-tune&#xff0c;现在讲解如何进行pre-train&#xff0c;如何得到一个pre train好的模型。 CoVe 其实最早的跟预训练有关的模型&#xff0c;应该是CoVe&#xff0c;是一个基于翻译任务的一个模型&#xff0c;其用encoder的模块做预训练。 但是CoVe需要…

OceanBase:集群常见操作

目录 1.查看 OBD 管理的集群列表 2.查看某个集群状态 3.启动 OceanBase 集群 4.连接 OceanBase 集群 5.停止运行中的集群 6.销毁已部署的集群 7.查看集群配置项 8.修改集群配置项 1.查看 OBD 管理的集群列表 obd cluster list 2.查看某个集群状态 obd cluster displa…

CMakeLists.txt基础指令与cmake-gui生成VS项目的步骤

简介 本博客主要介绍cmake的基本指令&#xff0c;同时&#xff0c;很多使用Visual Studio小白从Gitbub下载项目源码后&#xff0c;看到CMakeLists.txt&#xff0c;不知道如何使用Visual Studio编译源码&#xff1b;针对以上问题&#xff0c;做一下简单操作与解释&#xff0c;方…

解决 Python整数值的 header 问题

在使用Python的requests库进行HTTP请求时&#xff0c;自requests 2.11版本以后&#xff0c;出现了无法处理包含整数值的header的问题。这导致了所有使用requests库的请求都出现错误。 问题的发起者遇到了一个麻烦&#xff0c;就是在使用Python的requests库进行HTTP请求时&#…

2023 年最新 MySQL 数据库 Windows 本地安装、Centos 服务器安装详细教程

MySQL 基本概述 MySQL是一个流行的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛应用于各种业务场景。它是由瑞典MySQL AB公司开发&#xff0c;后来被Sun Microsystems收购&#xff0c;最终被甲骨文公司&#xff08;Oracle Corporation&#xff09;收购…

解析SOLIDWORKS教育版与企业版:选择合适版本,助力创新设计

SOLIDWORKS作为领先的三维CAD软件&#xff0c;旨在为工程设计、产品开发和创新提供全面支持。在SOLIDWORKS产品线中&#xff0c;教育版和企业版是两种常见的版本。让我们来了解一下它们之间的区别和特点。 SOLIDWORKS教育版&#xff1a;学习、探索、启发创新 面向教育和学术&…

nvm 离线安装,并离线安装指定版本 node

1. 离线安装 nvm 通常通过网络安装nvm的时候会被墙&#xff0c;所以nvm安装就只能进行离线安装了。 我们可以在github上下载nvm的安装包&#xff0c;然后在本地安装&#xff0c;下载地址&#xff1a;点击直达 点进去的详情长这样&#xff1a; 将下载下来的文件放到服务器&…

java VR全景商城免费搭建 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…