Apache commons net 项目中封装了各种网络协议的客户端,支持的协议包括:

·        FTP

·        NNTP

·        SMTP

·        POP3

·        Telnet

·        TFTP

·        Finger

·        Whois

·        rexec/rcmd/rlogin

·        Time (rdate) andDaytime

·        Echo

·        Discard

·        NTP/SNTP

目前最新的版本为3.3.

和httpclient相比,net包更加侧重各种网络协议的使用,很多是专业网络方面的知识,对不了解的这些网络特性的情况,很难理解这些包的具体含义。

总而言之,这是一个强大的类,这是一个富有生命力,有专业精神的类。 :)

import java.util.Arrays;

import java.util.Scanner;

import org.apache.commons.net.util.SubnetUtils;

import org.apache.commons.net.util.SubnetUtils.SubnetInfo;

/**

* Example class that shows how to use the [email protected] SubnetUtils} class.

* @author Rory Winston

*

*/

public classSubnetUtilsExample {

public static void main(String[] args) {

String subnet = "192.168.38.1/31";

SubnetUtils utils = new SubnetUtils(subnet);

SubnetInfo info = utils.getInfo();

System.out.printf("Subnet Information for %s:\n",subnet);

System.out.println("--------------------------------------");

System.out.printf("IP Address:\t\t\t%s\t[%s]\n",info.getAddress(),

Integer.toBinaryString(info.asInteger(info.getAddress())));

System.out.printf("Netmask:\t\t\t%s\t[%s]\n",info.getNetmask(),

Integer.toBinaryString(info.asInteger(info.getNetmask())));

System.out.printf("CIDR Representation:\t\t%s\n\n",info.getCidrSignature());

System.out.printf("Supplied IP Address:\t\t%s\n\n",info.getAddress());

System.out.printf("Network Address:\t\t%s\t[%s]\n",info.getNetworkAddress(),

Integer.toBinaryString(info.asInteger(info.getNetworkAddress())));

System.out.printf("Broadcast Address:\t\t%s\t[%s]\n",info.getBroadcastAddress(),

Integer.toBinaryString(info.asInteger(info.getBroadcastAddress())));

System.out.printf("Low Address:\t\t\t%s\t[%s]\n",info.getLowAddress(),

Integer.toBinaryString(info.asInteger(info.getLowAddress())));

System.out.printf("High Address:\t\t\t%s\t[%s]\n",info.getHighAddress(),

Integer.toBinaryString(info.asInteger(info.getHighAddress())));

System.out.printf("Total usable addresses: \t%d\n",Integer.valueOf(info.getAddressCount()));

System.out.printf("Address List: %s\n\n", Arrays.toString(info.getAllAddresses()));

System.out.println("全部地址:" + Arrays.toString(info.getAllAddresses()));

final String prompt ="Enter an IP address (e.g. 192.168.0.10):";

System.out.println(prompt);

Scanner scanner = new Scanner(System.in);

while (scanner.hasNextLine()) {

String address =scanner.nextLine();

System.out.println("The IP address [" + address + "] is "

+ (info.isInRange(address)? "": "not ")

+ "within the subnet [" + subnet + "]");

System.out.println(prompt);

}

}

}

运行结果如下:

Subnet Information for 192.168.38.1/31:

--------------------------------------

IP Address:         192.168.38.1    [11000000101010000010011000000001]

Netmask:            255.255.255.254 [11111111111111111111111111111110]

CIDR Representation:        192.168.38.1/31

Supplied IP Address:        192.168.38.1

Network Address:        192.168.38.0    [11000000101010000010011000000000]

Broadcast Address:      192.168.38.1    [11000000101010000010011000000001]

Low Address:            0.0.0.0 [0]

High Address:           0.0.0.0 [0]

Total usable addresses:     0

Address List: []

全部地址:[]

Enter an IP address (e.g.192.168.0.10):

java中commons-net包_Apache commons net 包介绍和简单使用详解相关推荐

  1. java中多线程之CAS(compareAndSet),Unsafe类大白话详解.

    java中多线程之CAS(compareAndSet),Unsafe类大白话详解 什么是CAS CAS原理 Unsafe类:     什么是CAS 比较并交换 在学习CAS之前,我们先了解一下JMM. ...

  2. python中paste函数的作用_PIL图像处理模块paste方法简单使用详解

    python2中提供了PIL基础的图像数据出来模块,在python3中更名为了pillow模块,名字虽然发生了改变,但是提供的方法和功能都是一样的,对于日常基础的图像数据处理分析来说是足够用了的,现在 ...

  3. Java中的微信支付(1):API V3版本签名详解

    1. 前言 最近在折腾微信支付,证书还是比较烦人的,所以有必要分享一些经验,减少你在开发微信支付时的踩坑.目前微信支付的 API 已经发展到V3版本,采用了流行的 Restful 风格. 微信支付V2 ...

  4. java中for的常规用法_Java for循环的几种用法详解

    本文非常适合初学Java的程序员,主要是来了解一下Java中的几种for循环用法,分析得十分详细,一起来看看. J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方 ...

  5. java中的getnumber怎么用_java安全编码指南之:Number操作详解

    简介 java中可以被称为Number的有byte,short,int,long,float,double和char,我们在使用这些Nubmer的过程中,需要注意些什么内容呢?一起来看看吧. Numb ...

  6. java中byte装箱和装箱_Java包装类、拆箱和装箱详解

    虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...

  7. Java中的i=i+1和i+=1以及i++和++i详解

    一.i=i+1和i+=1 (1)概念 i=i+1使用简单赋值运算,i+=1使用复合赋值运算. 简单赋值运算和复合赋值运算的最大差别就在于: 复合赋值运算符会自动地将运算结果转型为其左操作数的类型(即将 ...

  8. java前端长连接框架_Java中Spring Boot+Socket实现与html页面的长连接实例详解

    Spring Boot+Socket实现与html页面的长连接,客户端给服务器端发消息,服务器给客户端轮询发送消息,附案例源码 功能介绍 客户端给所有在线用户发送消息客户端给指定在线用户发送消息服务器 ...

  9. 从Java程序员进阶到架构师,6大核心技能要领详解

    " java架构师技能将分为如下6大环节:数据结构和算法,Java高级特性,Java web核心,数据库,Java框架与必备工具,系统架构设计. 希望能真正帮助到从程序员进阶到架构师之路的朋 ...

最新文章

  1. Zotero科研文献管理 - 将PDF文件同步到Google Driver中,不同电脑无缝使用
  2. 【题解】 bzoj2748 [HAOI2012]音量调节 (动态规划)
  3. asp.net控件库FineUI使用入门图解
  4. clickhouse集群表删除_携程用ClickHouse轻松玩转每天十亿级数据更新
  5. Elastic-Job简介
  6. ThinkPHP--栏目增删改查ADSF
  7. JBoss BRMS复杂事件处理(CEP)性能基准
  8. git status查看文件的状态
  9. 如何编写Ruby控制台程序(一)
  10. Ubuntu wine QQ卡死
  11. ‘’vr‘’全景抓鸡游戏总结
  12. 数据库优化的方案有哪些,请具体说明
  13. c语言大作业点歌系统,基于C语言的KTV点歌系统
  14. MOSS系列一 MOSS的安装
  15. 2021有什么好的入耳式耳机推荐?耳机热销性价比牌子排行榜单推荐!
  16. css 3d环形,CSS3 飞行的3D圆环
  17. ElasticSearch 7 中keyword和integer、long、short存储性能对比实验
  18. Qt5:error: no matching function for call to 'MainWindow::connect()
  19. VC下如何使用GDI+进行图像程序设计
  20. 推荐一款可快速全量交付 Kubernetes 集群分布式应用的神器 Sealer

热门文章

  1. 老年人Stroop任务期间颈动脉粥样硬化与脑激活模式的联系:fNIRS研究
  2. R语言绘制小提琴图geom_violin,如何给每个小提琴添加自定义直线?
  3. 为什么需要使用可调DWDM SFP+光模块?
  4. bat脚本输入密码_Mysql修改密码20190511
  5. 最全总结Jordan 标准型、Jordan分解、Jordan 标准型的计算方法
  6. ABB机器人与c#程序socket通信连接不上解决方法
  7. 才一年,H5的发展就成这样了
  8. 信息系统项目管理师Part9-可靠性和可用性
  9. Spring Cloud 断路器 Hystrix
  10. scrapy框架开发爬虫实战——css语法