您的位置:首页 > 运维架构 > Apache

Apache commons net 包介绍和简单使用

2014-12-25 11:52 423 查看
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包更加侧重各种网络协议的使用,很多是专业网络方面的知识,对不了解的这些网络特性的情况,很难理解这些包的具体含义。

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



package test.ffm83.commons.net.cidr;

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
class
SubnetUtilsExample {

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):
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐