精华内容
下载资源
问答
  • python获取本机mac地址和ip地址列表的代码
    千次阅读
    2021-12-06 15:09:52

    把写内容过程中常用的一些内容段记录起来,如下内容段是关于python获取本机mac地址和ip地址列表的内容。

    import sys, socket

    def getipaddrs(hostname):
    result = socket.getaddrinfo(hostname, None, 0, socket.SOCK_STREAM)
    return [x[4][0] for x in result]

    the name of the local machine

    hostname = socket.gethostname()

    try:
    print “IP addresses:”, ", ".join(getipaddrs(hostname))
    except socket.gaierror, e:
    print “Couldn’t not get IP addresses:”, e

    更多相关内容
  • 免费代理IP地址列表

    万次阅读 2018-09-20 22:13:00
    代理地址最后验证日期:2017-8-28 纯真 66免费代理网 #推荐 西刺免费代理IP 酷伯伯HTTP代理 快代理 proxy360.cn 站大爷 Free Proxy List 年少#不稳定 全网代理IP IP海 每日代理 #渣渣 360代理IP 流年免费HTTP代理IP ...
    展开全文
  • 获取同网段IP?...一个IP地址 一个子网掩码 像这样返回地址列表 [192.168.1.252, 192.168.1.253, 192.168.1.254, 192.168.1.255] [192.168.1.252, 192.168.1.253, 192.168.1.255] [192.168.1.253] p...

    获取同网段IP?

    对网络知识不牢靠的我,太小看了这东西,所以花费了我不少时间。
    条件:

    • 一个IP地址
    • 一个子网掩码

    像这样返回地址列表

    [192.168.1.252, 192.168.1.253, 192.168.1.254, 192.168.1.255]
    [192.168.1.252, 192.168.1.253, 192.168.1.255]
    [192.168.1.253]

        public static void main(String[] args) {
            System.out.println(getLocalAreaIpList("192.168.1.254", "255.255.255.252"));
            System.out.println(getLocalAreaIpList("192.168.1.254", "255.255.255.252", true));
            System.out.println(getLocalAreaIpList("192.168.1.254", "255.255.255.252", true, true));
        }
    

    我经历了些什么:

    • 格式判断
    • 转换IP为二进制数组
    • 计算子网数,主机数
    • 对二进制计算
    • 二进制转IP
    • 返回

    格式判断

    用到了一些东西, 如二进制转换与运算,正则表达式

    正则, 用于判断IP和子网掩码是否合法

        /**
         * 正则表达式: 匹配IPV4地址字符串
         */
        private final static String IPV4 = "^((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}$";
        private final static String IP_MASK = "^((128|192)|2(24|4[08]|5[245]))(\\.(0|(128|192)|2((24)|(4[08])|(5[245])))){3}$";
    
        /**
         * 判断字符串是否为IPV4地址格式
         *
         * @param ip 要验证的ip字符串
         * @return 是 true/ 否 false
         */
        public static boolean isIp(String ip) {
            if (ip == null) return false;
            Pattern patt = Pattern.compile(IPV4);
            return patt.matcher(ip).matches();
        }
    
        /**
         * 判断字符串是否为IPV4 子网掩码格式
         *
         * @param mask 要验证的子网掩码字符串
         * @return 是 true/ 否 false
         */
        public static boolean isIpMask(String mask) {
            if (mask == null) return false;
            Pattern patt = Pattern.compile(IP_MASK);
            return patt.matcher(mask).matches();
        }
    

    转换IP为二进制

    这里有两个方法, 一个用于转二进制字符串数组,另一个是数值型二进制数组

       /**
         * 获取IP地址或掩码二进制数组
         * @param ip IP或子网掩码
         * @return 二进制数组如[11111111,11111111,11111111,11111111]
         */
        public static String [] getIpBinary(String ip){
            String[] strs = ip.split("\\.");
            for (int i = 0; i < 4; i++){
                strs[i] = Integer.toBinaryString(Integer.parseInt(strs[i]));
                if(strs[i].length() < 8) {
                    StringBuilder zero = new StringBuilder();
                    for (int j = 0; j < 8 - strs[i].length(); j++) zero.append("0");
                    strs[i] = zero.toString() + strs[i];
                }
            }
            return strs;
        }
    
        /**
         * 将二进制字符串数组转换为byte数组,长度由第一个值的长度决定
         * @param binaryStrArr 二进制数组
         * @exception ArrayIndexOutOfBoundsException 如果数组二进制字符串长度不同,将会抛出异常
         * @return 如[1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0]
         */
        public static byte[] toBinary(String[] binaryStrArr){
            int bl = binaryStrArr[0].length();
            byte[] bytes = new byte[bl * binaryStrArr.length];
            for(int i = 0; i < binaryStrArr.length; i++){
                for (int j = 0; j < bl; j++) bytes[i * bl + j] = (byte) (binaryStrArr[i].charAt(j) == '1' ? 1 : 0);
            }
            return bytes;
        }
    

    计算子网数,主机数

    由于是IPv4 总长32, 子网掩码为1的累加,加起来就是子网掩码有效位;
    主机位长度为32-子网掩码位数
    最大主机数也即是 1 << 主机位数, 1位 0 ~ 1, 2位 0 ~ 3

    		byte[] maskArr = toBinary(maskBinary);//二进制掩码数组
            byte[] ipArr = toBinary(ipBinary);//二进制IP数组
            int maskLen = 0;//子网掩码长度
            for (int i = 0; i < maskArr.length; i++) maskLen += maskArr[i];
    //        int maskNumberLen = maskLen % 8;//子网位数,若为0 则8位全为主机号
    //        System.out.println("子网号位数:" + maskNumberLen);
            int hostNumberLen = 32 - maskLen;//主机IP位数
    //        System.out.println("主机号位数:" + hostNumberLen);
            int maxHost = 1 << hostNumberLen;
    

    对二进制计算

    这方法是对二进制数组进行增加某个值,用于IP生成时增加

        /**
         * 对二进制数组增加指定值
         * <p>如果增加的值超出此数组长度二进制最大表示值, 数组将重置为0, 从0开始增加</p>
         * @param binaryArray 二进制数组值应当全为1或0
         * @param plus 增加的数值10进制
         */
        public static void binaryArrayPlus(byte[] binaryArray, int plus){
            binaryArrayPlus(binaryArray, binaryArray.length - 1, plus);
        }
    
        /**
         * 对二进制数组增加指定值
         * <p>如果增加的值超出此数组长度二进制最大表示值, 数组将重置为0, 从0开始增加</p>
         * @param binaryArray 二进制数组值应当全为1或0
         * @param index 下标
         * @param plus 增加的数值10进制
         */
        private static void binaryArrayPlus(byte[] binaryArray, int index, int plus){
            if(index < 0) {
                binaryArray[0] = 0;
                return;
            }
            binaryArray[index] = (byte) (binaryArray[index] + 1);
            plus--;
            //如果进位,则递归进位
            if(binaryArray[index] > 1){
                binaryArrayPlus(binaryArray, index - 1, 1);
                binaryArray[index] = 0;
            }
            //如果增加的数超过1
            if(plus > 0) binaryArrayPlus(binaryArray, index, plus);
        }
    

    二进制转IP

    再就是将二进制数组转为IP字符串, 数学不好算法可能略差。

    StringBuilder genIp = new StringBuilder();//生成的IP
    //转换为IP地址
    int decimal = 0;
    for(int j = 0; j < 32; j++){
    	decimal += mod[j] << (7 - j % 8);
    	if(j != 0 && (j+1) % 8 == 0){
    		if(genIp.length() == 0) genIp.append(decimal);
    		else genIp.append(".").append(decimal);
    		decimal = 0;
    	}
    }
    //genIp.toString();//转换的IP
    

    返回,调用核心方法

    调用方法返回IP列表

        /**
         * 获取局域网内的所有IP, 包含参数地址, 包含首尾地址
         *
         * @param ip             用作查找基础的IP,返回此IP网段的地址列表
         * @param mask           子网掩码
         * @return IP list 或 null, 如果地址非法则返回null
         */
        public static List<String> getLocalAreaIpList(String ip, String mask){
            return getLocalAreaIpList(ip, mask, false);
        }
    
        /**
         * 获取局域网内的所有IP, 包含首尾地址
         *
         * @param ip             用作查找基础的IP,返回此IP网段的地址列表
         * @param mask           子网掩码
         * @param containParamIp 返回结果是否包含传入参数的IP
         * @return IP list 或 null, 如果地址非法则返回null
         */
        public static List<String> getLocalAreaIpList(String ip, String mask, boolean containParamIp ){
            return getLocalAreaIpList(ip, mask, containParamIp, false);
        }
    
        /**
         * 获取局域网内的所有IP
         *
         * @param ip             用作查找基础的IP,返回此IP网段的地址列表
         * @param mask           子网掩码
         * @param containParamIp 返回结果是否包含传入参数的IP
         * @param ignoreFirstAndLastIp 是否忽略首尾IP,(网段地址与广播地址)
         * @return IP list 或 null, 如果地址非法则返回null
         */
        public static List<String> getLocalAreaIpList(String ip, String mask, boolean containParamIp, boolean ignoreFirstAndLastIp) {
            if (!isIp(ip) || !isIpMask(mask)) return null;//非法ip或子网掩码
            String[] maskBinary = getIpBinary(mask);//子网掩码二进制数组
            //[11000000, 10101000, 00000000, 11111110]
            String[] ipBinary = getIpBinary(ip);//IP地址二进制数组
            //取同网段部分
            byte[] maskArr = toBinary(maskBinary);//二进制掩码数组
            byte[] ipArr = toBinary(ipBinary);//二进制IP数组
            int maskLen = 0;//子网掩码长度
            for (int i = 0; i < maskArr.length; i++) maskLen += maskArr[i];
    //        int maskNumberLen = maskLen % 8;//子网位数,若为0 则8位全为主机号
    //        System.out.println("子网号位数:" + maskNumberLen);
            int hostNumberLen = 32 - maskLen;//主机IP位数
    //        System.out.println("主机号位数:" + hostNumberLen);
            int maxHost = 1 << hostNumberLen;
    //        System.out.println("支持主机个数:" + maxHost);
            byte[] mod = new byte[32];//同网段二进制数组
            for(int i = 0; i < 32; i ++) mod[i] = (byte)(maskArr[i] & ipArr[i]);
            List<String> ipList = new ArrayList<>(maxHost);
            StringBuilder genIp = new StringBuilder();//生成的IP
            for(int i = 0; i < maxHost; i++){
                //转换为IP地址
                int decimal = 0;
                for(int j = 0; j < 32; j++){
                    decimal += mod[j] << (7 - j % 8);
                    if(j != 0 && (j+1) % 8 == 0){
                        if(genIp.length() == 0) genIp.append(decimal);
                        else genIp.append(".").append(decimal);
                        decimal = 0;
                    }
                }
                binaryArrayPlus(mod, 1);//从0开始增加maxHost次
    //            System.out.println(genIp);//生成的IP
                String generateIp = genIp.toString();
                genIp.delete(0, genIp.length());//清空
                if(ignoreFirstAndLastIp && (i == 0 || i == maxHost - 1)) continue;//跳过首位地址
                if(!containParamIp && generateIp.equals(ip)) continue;//跳过相同地址
                ipList.add(generateIp);
            }
            return ipList;
        }
    

    Last changed 2020-12-11 , cause if(!containParamIp && generateIp.equals(ip)) continue; 判断错误

    展开全文
  • 上篇文章通过Java自带的inetAddress类我们知道只能获取到单个ip地址, 这种方法是不适用与大多数情况的,因为大多数情况下我们的一个域名可能会映射到多个nginx主机ip 1.通过maven依赖jar包 <!--dns地址解析...

    上篇文章通过Java自带的inetAddress类我们知道只能获取到单个ip地址,

    这种方法是不适用与大多数情况的,因为大多数情况下我们的一个域名可能会映射到多个nginx主机ip

    1.通过maven依赖jar包

    <!--dns地址解析工具包-->
    <dependency>
       <groupId>org.xbill</groupId>
       <artifactId>dnsjava</artifactId>
       <version>2.0.8</version>
    </dependency>
    

    如果只依赖了aliyun的中央仓库是没法直接下载成功的 因为该包的仓库位置并不在中央仓库中

    针对这种情况需要我们下载源码然后将该jar发布到我们私有的中央仓库进行使用

    可参考我的这篇文章https://mp.csdn.net/postedit/90721499 

    将jar发布到公司私有的中央仓库中再进行依赖使用

     

    2.jar包依赖成功后就可以使用下面的代码获取对应域名的ip列表

    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.xbill.DNS.Lookup;
    import org.xbill.DNS.Record;
    import org.xbill.DNS.TextParseException;
    import org.xbill.DNS.Type;
    
    import java.net.UnknownHostException;
    import java.util.ArrayList;
    import java.util.List;
    
    
    public class NXLookUP {
        private static final Logger logger = LoggerFactory.getLogger(NXLookUP.class);
        public static void main(String[] args) throws UnknownHostException, TextParseException {
            urlToIp("baidu.com");
        }
    
        /**
         * 通过域名获取远程地址ip集合
         * @param url
         * @return
         */
        public static List<String> urlToIp(String url) {
            ArrayList<String> ipList = new ArrayList<>();
            Lookup lookup ;
            try {
                lookup = new Lookup(url, Type.A);
                lookup.run();
                if (lookup.getResult() != Lookup.SUCCESSFUL) {
                    logger.error("ERROR: " + lookup.getErrorString());
                    return null;
                }
                Record[] answers = lookup.getAnswers();
                int i = 1;
                for (Record rec : answers) {
                    logger.info("解析出ip地址{}>>>>>{}",i++,rec.rdataToString());
                    ipList.add(rec.rdataToString());
                }
            } catch (TextParseException e) {
                e.printStackTrace();
            }
            return ipList;
        }
    
    }
    

    3.运行结果

    如果有更好的方法,欢迎大家在留言区评论指正

    展开全文
  • 全球免费公共 DNS 解析服务器 IP 地址列表推荐 基本上接触过网络相关知识的人应该多少都会听过DNS这个名词。因为 DNS 它非常重要,在我们上网的过程中扮演着重要的角色——“将网址/域名解析成 IP 地址”。 ...
  • 微信服务器IP地址清单

    千次阅读 2021-08-05 17:47:09
    如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过该接口获得微信服务器IP地址列表或者IP网段信息。 官方文档: ... 每次获取还挺费事,在此贴出来,方便大家使用,后续不定期...
  • 全球免费公共 DNS 解析服务器 IP 地址列表推荐 (解决无法上网/加速/防劫持)  基本上接触过网络相关知识的人应该多少都会听过 DNS 这个名词。因为DNS 它非常重要,在我们上网的过程中扮演着重要的角色——“将...
  • 获取手机wifi热点分配的ip地址列表

    千次阅读 2015-08-05 23:31:36
    2、通过DHCP服务器分配IP地址、网关、DNS地址等网络参数。 3、客户端发送DHCP请求给服务端,DHCP服务器分配IP地址给客户端。 第一个过程无论android还是IOS都有相应的系统API来完成,而第二个过程通常由DNSMASP轻...
  • VC获取本机IP地址列表

    千次阅读 2011-02-12 13:18:00
     //循环得出本地机器所有IP地址  for (int i = 0; phe->h_addr_list[i] != 0; ++i) {  struct in_addr addr;  memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));  printf("Address %d : %s/n" ...
  • 迅雷资源服务器IP地址列表

    万次阅读 2009-08-20 11:06:00
    为了封掉公司的迅雷,试过了layer7过滤,早失效了,还是用土办法来得干脆——封IP。用 tcpdump 抓到了所有的迅雷服务器IP。 :D --------------bock_thunder.sh------------------------- #!/bin/sh # create new ...
  • 网络TCP/IP基础(IP地址与子网划分)

    千次阅读 多人点赞 2021-10-08 21:32:13
    目录 前言 一、IP地址 1、IP地址的格式 2、IP地址的分类 ... 现在网络中常用的IP地址版本是IPv4,随着Internet的快速发展,接入Internet的站点越来越多,导致IP地址资源越来越少,为了更好地利...
  • 批量ping列表中的IP地址

    千次阅读 2018-02-01 16:59:09
    工作中经常遇到需要一下ping上千个IP的情况。于是参照网上其他人的成果,稍加改造,最终有了这个脚本: #!/bin/bash for i in `cat $1` do ping=`ping -c 1 -w 1 $i|grep loss|awk '{print $6}'|awk -F "...
  • python 获取本机所有IP地址

    千次阅读 2021-11-24 14:54:40
    linux Python 获取本地ip
  • java获取局域网ip列表

    热门讨论 2009-11-05 10:27:16
    使用java获取所在局域网的所有在用ip,可以检测目前有哪些ip在使用
  • 公网IP地址获取:移动网络IP、Wifi IP

    千次阅读 2021-11-30 16:47:43
    公网IP地址获取:移动网络IP、Wifi IP 屏幕相关信息:密度、物理尺寸获取 BuildConfig获取的一系列基础信息 UA、网络状态…等持续更新 1. 移动流量IP地址获取 通过NetworkInterface的getNetworkInterfaces...
  • 如果公众号基于消息接收安全上的考虑,需要获知微信服务器的IP地址列表,以便识别出哪些消息是微信官方推送给你的,哪些消息可能是他人伪造的,可以通过该接口获得微信服务器IP地址列表。 接口调用请求说明 http...
  • 根据ip地址列表监测主机状态:根据公司服务器ip地址列表文件,监测各个主机ping的联通性,输出各个主机是否启动、关闭。这其中服务器数量并不固定,IP地址之间也无特殊规律。 #vi ipfor.sh #!/bin/bash HLIST=$(cat ...
  • IP地址转换与域名解析

    千次阅读 2020-02-27 20:57:20
    IP地址转换与域名解析IP地址与端口IP地址转换相关类域名解析代码分析![在这里插入图片描述](https://img-blog.csdnimg.cn/20200227205232196.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10...
  • function sendarp(ipaddr: ulong; temp: dword; ulmacaddr: pointer; ulmacaddrleng: pointer): Dword; StdCall;External 'Iphlpapi.dll' Name 'SendARP';
  • 今天章郎虫在看服务器安全相关内容的时候发现几个提供网络IP黑名单的网站,在这里和大家分享下。 1、http://antivirus.neu.edu.cn/scan/ 这个是“东北大学网络中心”提供的网络威胁黑名单系统,首页显示3389、22和...
  • Windows 使用QT读取IP地址并修改IP地址

    千次阅读 2018-05-09 16:16:11
    读取Windows的IP地址有三种方法:QT的QNetworkInterface IPHlpApiQT的QSettings读注册表修改windows的IP地址使用 netshnetsh interface ipv4 set address name = "以太网" source = static address = ...
  • IP前缀列表

    千次阅读 2020-12-01 18:40:53
    IP前缀列表,所匹配的对象是IP地址前缀,也就是路由条目。 一个路由条目由目的网络地址(也被称为IP前缀)及掩码长度(也被称为前缀长度)共同标识。 使用ACL从一批路由中筛选出感兴趣的路由时,是无法指定被匹配...
  • ip地址分类及预留ip地址大全

    千次阅读 2014-11-13 22:59:26
    网络IP地址是由32位二进制数组而,并且在互联网的范围内该地址唯一。为了方便管理员布置内网,而预留下了一些特殊的IP地址不在互联网上分配。下面就让我们来看一下这些IP地址有什么作用。 一、127.0.0.1 127是一个...
  • 在每台电脑中,系统中的ip协议都会有提供一种统一的ip地址,能够为为互联网上的每一个网络和每一台主机分配一个逻辑地址,从而达到屏蔽物理地址的差异,同时我们也可以对ip地址进行切换,那么电脑如何切换ip地址呢?...
  • 使用sort命令实现IP地址排序

    千次阅读 2017-01-15 19:24:06
    使用sort命令将IP地址从小到大排序。 测试文件ip.txt的内容如下: 192.168.2.3 10.4.1.3 172.3.4.5 10.64.31.3 7.3.4.6 123.23.58.29 192.16.17.13 11.23.93.153 10.14.1.3 [root@localhost shell]# sort -t "." -k1...
  • 问题描述: 一般在更换新网卡后,你的网络适配器会出现如下报错信息,该报错信息一般会出现在Windows XP...您想从高级对话框的IP地址列表输入不同的IP地址给这个适配器吗? 解决方法: 打开cmd终端,可以使用Win+R输入cm
  • 怎么通过ip地址定位到具体位置

    千次阅读 2021-07-27 03:37:29
    与朋友在网络上互相传送资料时,有时候需先知道对方电子计算机的ip地址,才能与对方建立信息传送安全通道。那么对方的ip地址该如何收查得到呢?这样的问题你也许会不屑一顾,确实,查寻对方电子计算机的ip地址,确实...
  • 编写一个脚本程序,检测指定IP地址的主机是否在线,如果在线则显示输出Online,否则输出Offline checkhost.sh [root@exam ~]# cd scripts [root@exam scripts]# touch checkhost.sh [root@exam scripts]# chmod +x ...
  • 怎么查看公众号服务器ip地址

    千次阅读 2021-08-12 10:51:41
    怎么查看公众号服务器ip地址吗 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。用户无法查询...
  • 微信服务器IP地址

    千次阅读 2016-02-23 08:47:04
    微信服务器IP地址会更新,2616年2月22日,如下 101.226.62.77-86 101.226.103.59-73 140.207.54.73-80 182.254.11.198-203 59.37.97.100-118 112.90.78.158-167 140.207.54.19 140.207.54.76-80 180.163.15.14...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 436,862
精华内容 174,744
关键字:

ip地址列表

友情链接: Singhi3.rar