根据IP地址获取主机名称

IP地址获得主机名称


1. 根据IP地址获得主机名称

        /// <summary>
        
/// 根据IP地址获得主机名称
        
/// </summary>
        
/// <param name="ip">主机的IP地址</param>
        
/// <returns>主机名称</returns>
        public string GetHostNameByIp(string ip)
        {
            ip 
= ip.Trim();
            
if (ip == string.Empty)
                
return string.Empty;
            
try
            {
                
// 是否 Ping 的通
                if (this.Ping(ip))
                {
                    System.Net.IPHostEntry host 
= System.Net.Dns.GetHostEntry(ip);
                    
return host.HostName;
                }
                
else
                    
return string.Empty;
            }
            
catch (Exception)
            {
                
return string.Empty;
            }
        }

说明:如果你的电脑可以上网你甚至可以查询到:IP地址“64.233.189.104”是 Google 的一个名为“hk-in-f104.google.com”的主机的IP地址。

GetHost2.JPG

关于代码中 this.Ping(ip) 方法后面再说。
既然说了如何“根据IP地址获得主机名称”,那就要再说说如何“根据主机名获得主机的IP地址”吧。

2. 根据主机名获得主机的IP地址
        /// <summary>
        
/// 根据主机名(域名)获得主机的IP地址
        
/// </summary>
        
/// <param name="hostName">主机名或域名</param>
        
/// <example>GetIPByDomain("pc001"); GetIPByDomain("www.google.com");</example>
        
/// <returns>主机的IP地址</returns>
        public string GetIpByHostName(string hostName)
        {
            hostName 
= hostName.Trim();
            
if (hostName == string.Empty)
                
return string.Empty;
            
try
            {
                System.Net.IPHostEntry host 
= System.Net.Dns.GetHostEntry(hostName);
                
return host.AddressList.GetValue(0).ToString();
            }
            
catch (Exception)
            {
                
return string.Empty;
            }
        }

说明:如果你的电脑可以上网你甚至可以查询到:“www.google.com”的IP地址是“64.233.189.104”。

GetHost1.JPG

最后,再说说C#实现简单的 Ping 的功能,用于测试网络是否已经联通。

3. C#实现简单的 Ping 的功能,用于测试网络是否已经联通
        /// <summary>
        
/// 是否能 Ping 通指定的主机
        
/// </summary>
        
/// <param name="ip">ip 地址或主机名或域名</param>
        
/// <returns>true 通,false 不通</returns>
        public bool Ping(string ip)
        {
            System.Net.NetworkInformation.Ping p 
= new System.Net.NetworkInformation.Ping();
            System.Net.NetworkInformation.PingOptions options 
= new System.Net.NetworkInformation.PingOptions();
            options.DontFragment 
= true;
            
string data = "Test Data!";
            
byte[] buffer = Encoding.ASCII.GetBytes(data);
            
int timeout = 1000// Timeout 时间,单位:毫秒
            System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options);
            
if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
                
return true;
            
else
                
return false;
        }

转载于:https://www.cnblogs.com/s021368/articles/1404677.html

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

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

相关文章

vector中的reserve() 与 resize()

resize()与reserve()都是vector容器中的方法&#xff1a; resize():改变了capacity()和size() reserve():增加了vector的capacity()&#xff0c;但是它的size()没有改变 #include <iostream> #include <stdio.h> #include <vector> #include<functiona…

【C++】考虑virtual函数以外的其他选择

假设你正在写一个视频游戏软件&#xff0c;游戏里有各种各样的人物&#xff0c;每个人物都有健康状态&#xff0c;而且不同的人物可能以不同的方式计算他们的健康指数&#xff0e;该如何设计游戏里的人物&#xff0c;主要如何提供一个返回人物健康指数的接口&#xff0e; 方法一…

不知道你们遇到这样的问题没?

最近在网上看到这样一个内容https://developer.horizon.ai/forumDetail/118363914936419003关于J5/J3/J2平台的底层软件地平线内部的释放计划和形式&#xff1f;您好&#xff1a;问题如题&#xff0c;我们当前在地平线J5平台展开进行的项目居多&#xff0c;跟贵司接触和合作的部…

shell脚本while read line的使用

#### 题目要求计算文档a.txt中每一行中出现的数字个数并且要计算一下整个文档中一共出现了几个数字。例如a.txt内容如下&#xff1a;12aa*lkjskdjalskdflkskdjflkjj我们脚本名字为 ncount.sh, 运行它时&#xff1a;bash ncount.sh a.txt输出结果应该为&#xff1a;20sum:2 ####…

boost::split()的使用方式

引用的头文件 <boost/algorithm/string.hpp> boost::split()函数用于切割string字符串&#xff0c;将切割之后的字符串放到一个std::vector<std::string> 之中&#xff1b; 有4个参数&#xff1a; 以boost::split(type, select_list, boost::is_any_of(",&…

Java中文与ASCII码的转换

今天在研究Java中编码的时候&#xff0c;看到了Java中ascii码的强大。写了一个CoderUtils.java&#xff0c;以后会扩展它。 package com.xingxd.study.test; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; /** * …

第四周:机器学习知识点回顾

前言&#xff1a; 讲真&#xff0c;复习这块我是比较头大的&#xff0c;之前的线代、高数、概率论、西瓜书、樱花书、NG的系列课程、李宏毅李沐等等等等…那可是花了三年学习佳实践下来的&#xff0c;现在一想脑子里就剩下几个名词就觉得废柴一个了&#xff0c;朋友们有没有同感…

移植linux内核到i.MX6ULL过程

本文描述移植NXP官方 linux 5.4 内核到i.MX6ULL开发板。一、NXP官方linux内核1. 下载 NXP官方linux仓库地址为&#xff1a;https://github.com/Freescale/linux-fslc/tree/5.4-2.1.x-imx。选择该分支下载zip包即可&#xff0c;不要整个仓库下载&#xff0c;太大了&#xff1a;2…

Go语言之进阶篇http服务器获取客户端的一些信息

1、http服务器获取客户端的一些信息 示例: package mainimport ("fmt""net/http" )//w, 给客户端回复数据 //r, 读取客户端发送的数据 func HandConn(w http.ResponseWriter, r *http.Request) {fmt.Println("r.Method ", r.Method)fmt.Println…

R学习之——R用于文本挖掘(tm包)

首先需要安装并加载tm包。 1、读取文本 x readLines("222.txt") 2、建立语料库 > rCorpus(VectorSource(x))> rA corpus with 7012 text documents 3、语料库输出&#xff0c;保存到硬盘 > writeCorpus(r) 4、查看语料库 > print(r) A corpus with 7012…

C#索引器(二)

索引器允许类和结构的实例按照与数组相同的方式进行索引&#xff0c;索引器类似与属性&#xff0c;不同之处在于他们的访问器采用参数。被称为有参属性。 简单的索引器实例&#xff1a; 索引器与属性的比较&#xff1a; 标示方式&#xff1a;属性以名称来标识&#xff0c;索引器…

C++中的定位放置new(placement new)

转载&#xff1a;https://www.cnblogs.com/weekbo/p/8533368.html 今天在使用new时&#xff0c;需要使用特定位置的一块内存&#xff0c;因此查了资料&#xff0c;发现该文章有帮助就现转载做一个备份。 一般来说&#xff0c;使用new申请空间时&#xff0c;是从系统的“堆”&…

学了STM32要继续学习Linux吗?

关注我的读者中&#xff0c;有很大一部分是单片机&#xff08;STM32&#xff09;的开发者&#xff0c;经常看到有人问类似的问题&#xff1a;学了STM32要继续学习Linux吗&#xff1f;每个人的情况不同&#xff0c;到底要不要学习Linux&#xff0c;要结合自身的情况。有的人已经…

win7域内桌面黑屏

网络环境: win2k3域 客户端: win7, win2k8 现象: 登录域后&#xff0c;桌面背景是黑色&#xff0c;所有点击会变双击 微软对这个问题已经有了介绍&#xff0c;而且出了补丁。 http://support.microsoft.com/kb/977944转载于:https://blog.51cto.com/kzhou/932680

在Javascript中实现伪哈希表

了解数据结构的人应该都听说过哈希表这种数据结构&#xff0c;它是一种典型的利用键值对存储并检索数据的一种非线性结构&#xff0c;又称散列表或杂凑法。在一般的线性表结构中&#xff0c;数据的相对位置是随机的&#xff0c;即数据和用于检索的关键字之间不存在确定的关系&a…

模板函数与特化函数

本文转自&#xff1a;https://www.cnblogs.com/dracohan/p/3401660.html 转来收藏以便查阅&#xff0c;感谢原作者 今天在写代码时&#xff0c;遇到了模板和特化&#xff0c;在网上找了资料后问题呗一一解决&#xff0c;转载此文用于以后查阅&#xff0c;感谢原创者。其中增加…

这样调试内核启动流程

内核生命周期uboot 打印完 Starting kernel . . .&#xff0c;就完成了自己的使命&#xff0c;控制权便交给了 kernel 的第一条指令&#xff0c;也就是下面这个函数init/main.casmlinkage __visible void __init start_kernel(void){...rest_init();}start_kernel 相当于内核的…

iview实现多文件上传,前段到后台

前段 业务是 分别上传两个文件 &#xff1a;1.一个报告 一个 表格&#xff0c;而且限制了格式 报告为doc 表格为xsl2.有别的参数 也要&#xff0c;比如&#xff0c;上传人&#xff0c;上传日期&#xff0c;中心名称 这样的话&#xff0c;我们无法使用 iview 的直接上传&#x…

ios 图片添加阴影

2019独角兽企业重金招聘Python工程师标准>>> UIimageView *imageView [[UIImageView alloc ] init]; imageView.layer.shadowColor [UIColor blackColor].CGColor; imageView.layer.shadowOffset CGSizeMake(3,2); imageView.layer.shadowOpacity 0.6; imageVie…

asp.net定时执行任务-解决应用池回收问题----转载

在复杂的业务应用程序中&#xff0c;有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行&#xff0c;比如定时备份或同步数据库&#xff0c;定时发送电子邮件&#xff0c;定期处理用户状态信息&#xff0c;支付系统中定期同步异常账单等等&#xff0c;我们…