C#获取IP地址

打开Cmd 输入ipconfig回车就会看到我们的这些号码 但是这些号码都是什么意思呢?


image.png

本地IPv4:可以理解为这是我们常说的本机IP,也是我们连的局域网IP(不过不是自己的要连的那个人电脑IP),但是现在网民变多IP资源枯竭的问题,就有了IPv6
本地IPv6:是IPv4的加强版,地址空间更长不会有枯竭问题、安全性更高,正在推广使用,但是中国用IPv4较多

子网掩码:我们一般看的都是固定的,详细的是这样,简单地说就是约束确保在一定ip范围内两台电脑可以连接


image.png

网关:就是一个中介,A电脑要通过TCP发送给B,A就要先发送给网关再由网关转发给B。

/**
*Copyright(C) 2019 by #COMPANY#
*All rights reserved.
*FileName:     #SCRIPTFULLNAME#
*Author:       #AUTHOR#
*Version:      #VERSION#
*UnityVersion:#UNITYVERSION#
*Date:         #DATE#
*Description:   
*History:
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
public enum EIP
{
    IPv4,
    IPv6,
    OutSideIP,
}

public class IPConfig
{
    public string GetIP(EIP type = EIP.IPv4)
    {
        switch (type)
        {
            case EIP.IPv4:
               return GetInsideIP(AddressFamily.InterNetwork);             
            case EIP.IPv6:
                return GetInsideIP(AddressFamily.InterNetworkV6);             
            case EIP.OutSideIP:
                return GetOutSideIP();            
        }
        return null;
    }

    string GetInsideIP(AddressFamily addressType)
    {
        IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());
        foreach (var item in ips)
        {
            if (item.AddressFamily == addressType)
            {
                return item.ToString();
            }
        }
        return null;
    }

    string GetOutSideIP()
    {
        using (WebClient wc = new WebClient())
        {
            //返回值自带换行
            return wc.DownloadString(@"http://icanhazip.com/").Replace("\n","");
        }
    }
}

然后这个是代码 服务器客户端都可以用 根据枚举获取内网外网

你可能感兴趣的:(C#获取IP地址)