[JAVA]PING和TELNET用法介绍
2010-02-04 16:41
369 查看
JAVA里的PING是在JDK 1.5后用了新的函数isreachable去实现,具体介绍如下:
InetAddress对象的常用方法
InetAddress类有很多get方法,用来获取主机名,主机地址等信息。主要有:
byte[] getAddress() 返回次InetAddress对象的原始IP地址,保存为一个byte数组
String getCanonicalHostName() 获取此IP地址的完全限定域名
String getHostAddress() 获取IP地址的字符串,返回为一个String
String getHostName() 获取此IP地址的主机名
下面一个简单的例子展示这些方法的使用:
这个例子首先是获取www.microsoft.com的对应的InetAddress实例,然后分别打印address.getHostAddress()、address.getHostName()
以及address.getCanonicalHostName()。
在这个例子中,需要注意的是IP地址中,每一个都是0-255之间的,是无符号的。
但是java中的byte表示的区域是-128~127,所以中间需要做一个转换。
结果如下:
ip: 207.46.19.254
分别测试本机是否可达以及www.baidu.com是否可达。运行的结果是
感觉奇怪么,前者是正常的,但是按理说www.baidu.com应该也是可达的,实际确实false,这个原因是因为isReachable的实现,
通常是ICMP ECHO Request 或是尝试使用目标主机上的端口7进行连接,很有可能被防火墙拦截,所以会访问不到。
如果要TELNET的话,会比较准确,比如以下代码
[/code]
InetAddress对象的常用方法
InetAddress类有很多get方法,用来获取主机名,主机地址等信息。主要有:
byte[] getAddress() 返回次InetAddress对象的原始IP地址,保存为一个byte数组
String getCanonicalHostName() 获取此IP地址的完全限定域名
String getHostAddress() 获取IP地址的字符串,返回为一个String
String getHostName() 获取此IP地址的主机名
下面一个简单的例子展示这些方法的使用:
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(" "); } } }
这个例子首先是获取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 1.2. InetAddress对象的其他实用方法 isReachable(int timeout) 测试是否能达到特定IP地址 isReachable(NetworkInterface netif,int ttl,int timeout)测试是否能达到特定IP地址, 并且制定特定的NetworkInterface,ttl表示路由过程中的最大跳数,timeout是超时时间。 一个简单的例子如下: [code] 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进行连接,很有可能被防火墙拦截,所以会访问不到。
如果要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(); }
[/code]
相关文章推荐
- [JAVA]PING和TELNET用法介绍
- PING和TELNET用法介绍
- Java中枚举类型Enum的用法介绍
- JAVA中的Ping和Telnet 分类: java 2009-11-30 22:56 450人阅读 评论(0) 收藏
- java native2ascii的用法介绍
- JAVA中ThreadLocal用法介绍
- Java中的Enum用法介绍
- java中InputStream中read()与read(byte[] b) 用法介绍
- 介绍Java中的assert用法
- Java的枚举类型用法介绍
- Java中的Enum(枚举)用法介绍
- 黑马程序员-Java中static、this、super、final用法介绍
- 使用java简单模拟ping和telnet的实现
- Java中的Enum用法介绍
- 使用java简单模拟ping和telnet的实现
- Java多线程的用法详细介绍
- JAVA中的Ping和Telnet
- java 进行ping和telnet命令
- java注解Annotation,的基本作用和用法的简明介绍
- java native2ascii的用法介绍