asp.net中c#获取本机IP地址实例代码

例1

 代码如下 复制代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

namespace CSharpTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write(new Program().GetHostInfo());
            Console.ReadLine();
        }
        //获取本地IPd等信息
        protected string GetHostInfo()  
        {
            StringBuilder hostInfo = new StringBuilder("");
            IPAddress[] ipHost = Dns.GetHostAddresses(Dns.GetHostName());
            hostInfo.Append("本机名:");
            hostInfo.Append(Dns.GetHostName());
            hostInfo.Append("rn");
            hostInfo.Append("IP 地址:");
            hostInfo.Append("rn");

            foreach (IPAddress address in ipHost)
            {
                hostInfo.Append(address.ToString());
                hostInfo.Append("rn");
            }

            return hostInfo.ToString();
        }
    }
}

 

控制台输出结果:

 本机名:meteor-PC
IP 地址:
fe80::a1a2:949c:1a51:5e6c%11
2002:b46f:20fa::b46f:20fa
169.254.94.108
180.111.32.250

例2

 代码如下 复制代码

public static IPAddress GetHostIP()
{
IPHostEntry ipe = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ip = ipe.AddressList[0];

return ip;
}
private String GetIPAddress()
{
String str;
String Result = "";
String hostName = Dns.GetHostName();
IPAddress[] myIP = Dns.GetHostAddresses(hostName);
foreach (IPAddress address in myIP)
{
str = address.ToString();
for (int i = 0; i < str.Length; i++)
{
if (str[i] >= '0' && str[i] <= '9' || str[i] == '.') Result = str;
}
}
return Result;
}

例3

上面的方法满足不了我的需求,然后我在Google搜了一些,并没有个很好的办法,于是自己摸索写下了这个方法。如果觉得有些地方欠妥的

 代码如下 复制代码

/// <summary>
/// 得到本机IP
/// </summary>
private string GetLocalIP() 
{
    //本机IP地址
    string strLocalIP = "";
    //得到计算机名
    string strPcName = Dns.GetHostName();
    //得到本机IP地址数组
    IPHostEntry ipEntry = Dns.GetHostEntry(strPcName);
    //遍历数组
    foreach(var IPadd in ipEntry.AddressList)
    {
        //判断当前字符串是否为正确IP地址
        if (IsRightIP(IPadd.ToString())) 
        {
            //得到本地IP地址
            strLocalIP = IPadd.ToString();
            //结束循环
            break;
        }
    }
 
    //返回本地IP地址
    return strLocalIP;
}
  

?//得到网关地址
private string GetGateway() 

    //网关地址
    string strGateway = "";
    //获取所有网卡
    NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
    //遍历数组
    foreach (var netWork in nics)
    {
        //单个网卡的IP对象
        IPInterfaceProperties ip = netWork.GetIPProperties();
        //获取该IP对象的网关
        GatewayIPAddressInformationCollection gateways = ip.GatewayAddresses;
        foreach(var gateWay in gateways)
        {
            //如果能够Ping通网关
            if(IsPingIP(gateWay.Address.ToString()))
            {
                //得到网关地址
                strGateway = gateWay.Address.ToString();
                //跳出循环
                break;
            }
        }
 
        //如果已经得到网关地址
        if (strGateway.Length > 0) 
        {
            //跳出循环
            break;
        }
    }
 
    //返回网关地址
    return strGateway;
}
  

?/// <summary>
/// 判断是否为正确的IP地址
/// </summary>
/// <param name="strIPadd">需要判断的字符串</param>
/// <returns>true = 是 false = 否</returns>
public static bool IsRightIP(string strIPadd) 
{
    //利用正则表达式判断字符串是否符合IPv4格式
    if (Regex.IsMatch(strIPadd, "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"))
    {
        //根据小数点分拆字符串
        string[] ips = strIPadd.Split('.');
        if (ips.Length == 4 || ips.Length == 6)
        {
            //如果符合IPv4规则
            if (System.Int32.Parse(ips[0]) < 256 && System.Int32.Parse(ips[1]) < 256 & System.Int32.Parse(ips[2]) < 256 & System.Int32.Parse(ips[3]) < 256)
                //正确
                return true;
            //如果不符合
            else
                //错误
                return false;
        }
        else
            //错误
            return false;
    }
    else
        //错误
        return false;
}
  

?/// <summary>
/// 尝试Ping指定IP是否能够Ping通
/// </summary>
/// <param name="strIP">指定IP</param>
/// <returns>true 是 false 否</returns>
public static bool IsPingIP(string strIP) 
{
    try
    {
        //创建Ping对象
        Ping ping = new Ping();
        //接受Ping返回值
        PingReply reply = ping.Send(strIP, 1000);
        //Ping通
        return true;
    }
    catch
    {
        //Ping失败
        return false;
    }
}

时间: 2024-08-04 04:53:11

asp.net中c#获取本机IP地址实例代码的相关文章

Delphi 7中快速获取本机IP地址

朋友们在用Delphi编程序的时候,常常碰到需要在程序中获取自己的IP地址的情况.在以往的版本中,可以通过编写一段代码或函数实现这一功能.但有了Delphi 7,这个工作可以更简化了.利用控件只需一句代码,就可以非常方便地实现这一功能. 新建一Project1,在form1中添加控件statusbar1(Win32页)和控件IdIPWatch1(Indy Misc页).接着设置好控件属性:在statusbar1的panels中添加0-TStatusPanel和1-TStatusPanel两项:I

python在Windows8下获取本机ip地址的方法_python

本文实例讲述了python在Windows8下获取本机ip地址的方法.分享给大家供大家参考.具体实现方法如下: import socket hostname = socket.gethostname() IPinfo = socket.gethostbyname_ex(hostname) LocalIP = IPinfo[2][2] print LocalIP 希望本文所述对大家的Python程序设计有所帮助. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内

Qt 5.7 获取本机IP地址

Qt 获取本机IP地址 最先想到的方案 QString get_local_ip() { QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName()); // 找出一个IPv4地址即返回 foreach(QHostAddress address,info.addresses()) { if(address.protocol() == QAbstractSocket::IPv4Protocol) { return address.

php获取本机真实IP地址实例代码_php技巧

本文实例为大家分享了php获取本机真实IP地址实例代码,供大家参考. 主要是获取操作系统为win2000/xp.win7的本机IP真实地址,和获取操作系统为linux类型的本机IP真实地址,具体内容如下 function getLocalIP() { $preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/

python Flask获取用户的IP地址的代码

python Flask框架下获取用户的IP地址的范例代码,下面的代码包含了html页面和python代码,非常详细,如果你正使用Flask,也可以学习一下最基本的Flask使用方法. from flask import Flask, render_template, request # Initialize the Flask application app = Flask(__name__) # Default route, print user's IP @app.route('/') d

应用:C/C++获取本机IP地址

/* 编译环境: visual c++ */ #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") int doit(int, char **) { char host_name[255]; //获取本地主机名称 if (gethostname(host_name, sizeof(host_name)) == SOCKET_ERROR) { printf("

asp.net 透过ISA获取真实的IP地址

问题描述 请问各位大虾如何透过ISA获取客户端真实的IP地址?Page.Request.UserHostAddress;Request.ServerVariables("REMOTE_ADDR")Request.ServerVariables("HTTP_X_FORWARDED_FOR")都没用

python 获取本机ip地址的两个方法_python

第一种: 复制代码 代码如下: import socket import fcntl import struct def get_ip_address(ifname): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.ioctl( s.fileno(), 0x8915, # SIOCGIFADDR struct.pack('256s', ifname[:15]) )[20:24]

Shell脚本中获取本机ip地址的3个方法_linux shell

方法一: 复制代码 代码如下: /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" or /sbin/ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p' 方法二: 复制代码 代码如下: local_host="`hostname --fqdn`" local_i