C# 随机获取国内IP

调用getRandomIp()方法即可
Framework3.5 +使用LINQ

public string getRandomIp()
        {     /*
     int[][]
     这个叫交错数组,白话文就是数组的数组.
    初始化的方法:
     int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
当然也可以使用{}初始化器初始化
             int[][] numbers = { new int[] {2,3,4},
                            new int[] {5,6,7,8,9}
                          };
     */
         int[][] range = {new int[]{607649792,608174079},//36.56.0.0-36.63.255.255
new int[]{1038614528,1039007743},//61.232.0.0-61.237.255.255
new int[]{1783627776,1784676351},//106.80.0.0-106.95.255.255
new int[]{2035023872,2035154943},//121.76.0.0-121.77.255.255
new int[]{2078801920,2079064063},//123.232.0.0-123.235.255.255
new int[]{-1950089216,-1948778497},//139.196.0.0-139.215.255.255
new int[]{-1425539072,-1425014785},//171.8.0.0-171.15.255.255
new int[]{-1236271104,-1235419137},//182.80.0.0-182.92.255.255
new int[]{-770113536,-768606209},//210.25.0.0-210.47.255.255
 new int[]{-569376768,-564133889}, //222.16.0.0-222.95.255.255
};

            Random rdint = new Random();
            int index = rdint.Next(10);
            string ip = num2ip(range[index][0] + new Random().Next(range[index][1] - range[index][0]));
            return ip;
        }

        /*
         * 将十进制转换成ip地址
        */
        public string num2ip(int ip)
        {
            int[] b = new int[4];
            string x = "";
            //位移然后与255 做高低位转换
            b[0] = (int)((ip >> 24) & 0xff);
            b[1] = (int)((ip >> 16) & 0xff);
            b[2] = (int)((ip >> 8) & 0xff);
            b[3] = (int)(ip & 0xff);
            x = (b[0]).ToString() + "." + (b[1]).ToString() + "." + (b[2]).ToString() + "." + (b[3]).ToString();

            return x;
        }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static Dictionary<int, int> ips = new int[][]
            {
                Enumerable.Range(607649792, 608174079 - 607649792 + 1).ToArray(),
                Enumerable.Range(1038614528, 1039007743 - 1038614528 + 1).ToArray(),
                Enumerable.Range(1783627776, 1784676351 - 1783627776 + 1).ToArray(),
                Enumerable.Range(2035023872, 2035154943 - 2035023872 + 1).ToArray(),
                Enumerable.Range(2078801920, 2079064063 - 2078801920 + 1).ToArray(),
                Enumerable.Range(-1950089216, -1948778497 + 1950089216 + 1).ToArray(),
                Enumerable.Range(-1425539072, -1425014785 + 1425539072 + 1).ToArray(),
                Enumerable.Range(-1236271104, -1235419137 + 1236271104 + 1).ToArray(),
                Enumerable.Range(-770113536, -768606209 + 770113536 + 1).ToArray(),
                Enumerable.Range(-569376768, -564133889 + 569376768 + 1).ToArray()
            }.SelectMany(x => x).Select((x, i) => new { x, i }).ToDictionary(x => x.i, x => x.x);

        static string IpToString(int IP)
        {
            return string.Join(".", BitConverter.GetBytes(IP).Reverse().Select(x => ((int)x).ToString()));
        }

        static int GenIP()
        {
            return ips[new Random(Guid.NewGuid().GetHashCode()).Next(0, ips.Count)];
        }

        static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
                Console.WriteLine(IpToString(GenIP()));
        }
    }
}

加了比较不容易理解部分的注释..想弄明白的同学想必现在已经明白了吧

时间: 2024-08-15 10:05:32

C# 随机获取国内IP的相关文章

php随机生成国内ip地址

获得一个国家所有ip段,随机生成国内ip地址的缩水实现.注意:  $ip_long数组中后5个值在64位系统中可能是错误的(下面代码中  $ip_long 数组的后五个值在32位系统中为负数,64位系统中为正数,前五个值在64位系统中也可能有错误) 32位系统echo ip2long(“172.16.1.63″);结果 -140823724964位操作系统echo ip2long(“172.16.1.63″); 来源:http://www.liangkun.net/archives/681.ht

Python3.x:获取代理ip

Python3.x:获取代理ip 获取代理ip,代码: # python3 # 国内高匿代理IP网站:http://www.xicidaili.com/nn/ # 爬取首页代理IP地址 from bs4 import BeautifulSoup import requests import random # 获取首页IP列表 def get_ip_list(url, headers): web_data = requests.get(url, headers=headers) soup = Be

python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性)

python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性) 目录 随机User-Agent 获取代理ip 检测代理ip可用性 随机User-Agent fake_useragent库,伪装请求头 from fake_useragent import UserAgent ua = UserAgent() # ie浏览器的user agent print(ua.ie) # opera浏览器 print(ua.opera) # chrome浏览器 print(ua.chro

再论 ASP.NET 中获取客户端IP地址

说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方.IP在不同系统中,应用相当广泛,常见的日志记录.广告分区域投放等. 1: HttpContext.Current.Request.ServerVariables["HTTP_VIA"]; 2: HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"

javaweb -- 获取请求IP(附实现源码)

实现步骤如下: (1)新建一个java web工程 (2)新建servers包,新建类GetRequestIp,用来处理获取请求IP,GetRequestIp类完整代码如下: package servers; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GetRequestIp { public static void post(

如何获取真实IP

/*获取真实IP/*获取真实IP **********************************/ function GetIp(){ $realip = ''; $unknown = 'unknown'; if (isset($_SERVER)){ if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) && strcasecmp($_SERVER[

[源码]随机获取虾米音乐song_id API文件

[源码]随机获取虾米音乐song_id API文件 January 11, 2015 注意:此API请放置于国内主机使用,如香港.北京等等,否则会提示:虾米音乐在您所处的国家或地区暂时无法使用 <?php $url = file_get_contents('http://www.xiami.com/search/song/page/'.rand(1,636).'?key=%E5%8A%A8%E6%BC%AB&is_pub=y'); preg_match_all("/\?sid=(\

c# 获取客户端IP地址方法

客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariables.Get("Remote_Host").ToString(); 客户端浏览器IE: Request.Browser.Browser; 客户端浏览器 版本号: Request.Browser.MajorVersion;// 客户端操作系统: Request.Browser.Platfo

asp.net获取客户端IP方法(转载)

最近web获取客户端ip,看到下面这篇文章,转载过来,一起分享(转载地址:http://www.cnblogs.com/yejun/archive/2008/02/26/1082485.html) 通常我们都通过下面的代码获得IP: string ip =System.Web.HttpContext.Current.Request.UserHostAddress; 或 string ip =System.Web.HttpContext.Current.Request.ServerVariable