Apache commons net 包介紹和簡單使用

pmw4 9年前發布 | 4K 次閱讀 Java

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 {@link SubnetUtils} class.

 * @author Rory Winston <rwinston@apache.org>

 *

 */

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):

 本文由用戶 pmw4 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!