JAVA中的Ping和Telnet 分类: java 2009-11-30 22:56 450人阅读 评论(0) 收藏
2009-11-30 22:56
453 查看
JAVA里的PING是在JDK 1.5后用了新的函数isreachable去实现,具体介绍如下:
InetAddress对象的常用方法
InetAddress类有很多get方法,用来获取主机名,主机地址等信息。主要有:
byte[] getAddress() 返回次InetAddress对象的原始IP地址,保存为一个byte数组
String getCanonicalHostName() 获取此IP地址的完全限定域名
String getHostAddress() 获取IP地址的字符串,返回为一个String,【以文本表现形式】:207.46.193.254
String getHostName() 获取此IP地址的主机名,www.microsoft.com
下面一个简单的例子展示这些方法的使用:
package org.dakiler.javanet.chapter1;
import java.net.InetAddress;
public class Example3
{
public static void main(String args[])throws Exception
{
InetAddress address=InetAddress.getByName("www.microsoft.com");
System.out.println("ip: "+address.getHostAddress());
System.out.println("host: "+address.getHostName());
System.out.println("canonical host name: "+address.getCanonicalHostName());
byte[] bytes=address.getAddress();
for(byte b:bytes)
{
if(b>=0)System.out.print(b);
else System.out.print(256+b);
System.out.print(" ");
}
System.out.println("本机地址:"+InetAddress.getLocalHost());
}
}
这个例子首先是获取www.microsoft.com的对应的InetAddress实例,然后分别打印address.getHostAddress() address.getHostName()以及address.getCanonicalHostName()。在这个例子中,需要注意的是IP地址中,每一个都是0-255之间的,是无符号的。但是java中的byte表示的区域是-128~127,所以中间需要做一个转换。
结果如下:
ip: 207.46.19.254
host: www.microsoft.com
canonical host name: wwwbaytest2.microsoft.com
207 46 19 254
本机地址:icbcoa-d5332a43/192.168.1.4
1.2. InetAddress对象的其他实用方法
isReachable(int timeout) 测试是否能达到特定IP地址
isReachable(NetworkInterface netif,int ttl,int timeout)测试是否能达到特定IP地址,并且制定特定的NetworkInterface,ttl表示路由过程中的最大跳数,timeout是超时时间。一个简单的例子如下:
package org.dakiler.javanet.chapter1;
import java.net.InetAddress;
public class Example4
{
public static void main(String args[])throws Exception
{
InetAddress address1=InetAddress.getLocalHost();
InetAddress address2=InetAddress.getByName("www.baidu.com");
System.out.println(address1.isReachable(5000));
System.out.println(address2.isReachable(5000));
}
}
分别测试本机是否可达以及www.baidu.com是否可达。运行的结果是:
true
false
感觉奇怪么,前者是正常的,但是按理说www.baidu.com应该也是可达的,实际确实false,这个原因是因为isReachable的实现。
此方法用于测试是否可以达到该地址。实现尽最大努力试图到达主机,但防火墙和服务器配置可能阻塞请求,使其在某些特定的端口可以访问时处于不可到达状态。如果可以获得权限,则典型实现将使用 ICMP ECHO REQUEST;否则它将试图在目标主机的端口 7 (Echo) 上建立 TCP 连接。
如果要TELNET的话,会比较准确,比如以下代码
// TODO Auto-generated method stub
Socket server = null;
try {
server = new Socket();
InetSocketAddress address = new InetSocketAddress("bbs.sysu.edu.cn",23);
server.connect(address, 5000);
System.out.println("ok!");
}
catch (UnknownHostException e) {
System.out.println("wrong!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("wrong");
e.printStackTrace();
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jackyrongvip/archive/2009/11/13/4809410.aspx
InetAddress对象的常用方法
InetAddress类有很多get方法,用来获取主机名,主机地址等信息。主要有:
byte[] getAddress() 返回次InetAddress对象的原始IP地址,保存为一个byte数组
String getCanonicalHostName() 获取此IP地址的完全限定域名
String getHostAddress() 获取IP地址的字符串,返回为一个String,【以文本表现形式】:207.46.193.254
String getHostName() 获取此IP地址的主机名,www.microsoft.com
下面一个简单的例子展示这些方法的使用:
package org.dakiler.javanet.chapter1;
import java.net.InetAddress;
public class Example3
{
public static void main(String args[])throws Exception
{
InetAddress address=InetAddress.getByName("www.microsoft.com");
System.out.println("ip: "+address.getHostAddress());
System.out.println("host: "+address.getHostName());
System.out.println("canonical host name: "+address.getCanonicalHostName());
byte[] bytes=address.getAddress();
for(byte b:bytes)
{
if(b>=0)System.out.print(b);
else System.out.print(256+b);
System.out.print(" ");
}
System.out.println("本机地址:"+InetAddress.getLocalHost());
}
}
这个例子首先是获取www.microsoft.com的对应的InetAddress实例,然后分别打印address.getHostAddress() address.getHostName()以及address.getCanonicalHostName()。在这个例子中,需要注意的是IP地址中,每一个都是0-255之间的,是无符号的。但是java中的byte表示的区域是-128~127,所以中间需要做一个转换。
结果如下:
ip: 207.46.19.254
host: www.microsoft.com
canonical host name: wwwbaytest2.microsoft.com
207 46 19 254
本机地址:icbcoa-d5332a43/192.168.1.4
1.2. InetAddress对象的其他实用方法
isReachable(int timeout) 测试是否能达到特定IP地址
isReachable(NetworkInterface netif,int ttl,int timeout)测试是否能达到特定IP地址,并且制定特定的NetworkInterface,ttl表示路由过程中的最大跳数,timeout是超时时间。一个简单的例子如下:
package org.dakiler.javanet.chapter1;
import java.net.InetAddress;
public class Example4
{
public static void main(String args[])throws Exception
{
InetAddress address1=InetAddress.getLocalHost();
InetAddress address2=InetAddress.getByName("www.baidu.com");
System.out.println(address1.isReachable(5000));
System.out.println(address2.isReachable(5000));
}
}
分别测试本机是否可达以及www.baidu.com是否可达。运行的结果是:
true
false
感觉奇怪么,前者是正常的,但是按理说www.baidu.com应该也是可达的,实际确实false,这个原因是因为isReachable的实现。
此方法用于测试是否可以达到该地址。实现尽最大努力试图到达主机,但防火墙和服务器配置可能阻塞请求,使其在某些特定的端口可以访问时处于不可到达状态。如果可以获得权限,则典型实现将使用 ICMP ECHO REQUEST;否则它将试图在目标主机的端口 7 (Echo) 上建立 TCP 连接。
如果要TELNET的话,会比较准确,比如以下代码
// TODO Auto-generated method stub
Socket server = null;
try {
server = new Socket();
InetSocketAddress address = new InetSocketAddress("bbs.sysu.edu.cn",23);
server.connect(address, 5000);
System.out.println("ok!");
}
catch (UnknownHostException e) {
System.out.println("wrong!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("wrong");
e.printStackTrace();
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jackyrongvip/archive/2009/11/13/4809410.aspx
相关文章推荐
- C#实现函数默认值和C#4.0实现默认值 分类: C# 2012-05-14 22:56 4103人阅读 评论(0) 收藏
- Velocity浅析及与Jsp、Freemarker对比 分类: B1_JAVA 2014-07-21 09:14 637人阅读 评论(0) 收藏
- java生成UUID通用唯一识别码 (Universally Unique Identifier) 分类: B1_JAVA 2014-08-22 16:09 331人阅读 评论(0) 收藏
- spring quartz:Instantiation of bean failed; nested exception is java.lang.IncompatibleClassChangeErr 分类: Java spring 2015-01-07 19:00 438人阅读 评论(0) 收藏
- 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题 分类: B1_JAVA 2015-02-10 21:05 135人阅读 评论(0) 收藏
- PC端 java 开发蓝牙所遇到的问题 分类: Java 2015-07-30 09:12 150人阅读 评论(0) 收藏
- jdbc之二:DAO模式 分类: B1_JAVA 2014-04-29 15:13 1536人阅读 评论(0) 收藏
- 树莓派入手(烧写系统,调整分区,配置Java环境,串口GPS配置) 分类: Raspberry Pi 2015-04-09 21:13 145人阅读 评论(0) 收藏
- Zookeeper实现服务上下线监控服务列表 分类: hadoop Java 2015-06-25 22:37 71人阅读 评论(0) 收藏
- Java反射机制和对象序列化 分类: Java 2015-06-26 12:08 21人阅读 评论(0) 收藏
- Android的sdk、api及工程目录说明 分类: JAVA 2015-01-16 16:20 365人阅读 评论(0) 收藏
- 01-Jvm 内存区域复习笔记 分类: JVM Java 2015-07-16 12:52 139人阅读 评论(0) 收藏
- 计算阶乘之和 分类: java 2009-11-02 14:12 206人阅读 评论(0) 收藏
- 用java程序启动电脑中的软件 分类: java 2009-11-05 01:03 355人阅读 评论(0) 收藏
- java.lang.IllegalArgumentException: <session-config> element is limited to 1 occurrence 分类: Tomcat 2014-12-09 11:20 513人阅读 评论(0) 收藏
- JAVA的helloworld 分类: JAVA 2013-07-22 16:29 395人阅读 评论(0) 收藏
- Android Studio安装、配置 分类: JAVA 2015-01-10 18:01 443人阅读 评论(0) 收藏
- spring quartz:Instantiation of bean failed; nested exception is java.lang.IncompatibleClassChangeErr 分类: Java spring 2015-01-07 19:00 437人阅读 评论(0) 收藏
- Oracle EM错误,java.lang.Exception: Exception in sending Request :: null 分类: Oracle 2015-07-08 21:24 44人阅读 评论(0) 收藏
- LINUX下java串口程序环境配置 分类: LINUX 2010-07-07 10:04 1571人阅读 评论(0) 收藏