文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页技术开发java教程 → JAVA里的PING和TELNET的用法详解

JAVA里的PING和TELNET的用法详解

时间:2011/1/21 17:59:59来源:本站原创作者:清晨我要评论(0)

        AVA里的PING是在JDK 1.5后用了新的函数isreachable去实现,具体介绍如下:

  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是超时时间。一个简单的例子如下:

  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();

  }

相关视频

    没有数据

相关阅读 java.lang.NullPointerException错误处理方法及原因分析java环境变量配置方法Flex与Java通信教程java开发环境搭建方法介绍java开发软件myeclipse的快捷键和myeclipse快捷键设置win7中java环境变量设置及java编程工具安装java state 状态设计模式asp下面javascript上传图片限制格式大小方法

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 myeclipse如何安装插件myeclipse怎么显示代码 myeclipse怎么连接到数据库 myeclipse连接到eclipse没有maven选项怎么办 eclipse没有majava设置cookie教程 java怎么设置cookiejava怎么设置随机数 java设置随机数详细教程

人气排行 java.lang.NullPointerException错误处理方eclipse没有maven选项怎么办 eclipse没有majava环境变量配置方法java中String类主要方法的使用java中创建并初始化字符串方法MyEclipse的注册以及汉化方法图解myeclipse如何安装插件 myeclipse安装插件方一个简单Java发邮件源代码