如何在SOLARIS和HPUX操作系统里调用自己写的java程序,弹出dos窗口(注意要弹出dos窗口),显示ping信息呢?WINDOWS的是"cmd.exe /c start ping 127.0.0.1" 
SOLARIS和HPUX这两个操作系统的是什么样的呢?

解决方案 »

  1.   

    很肯定的告诉楼主,solaris上是无法直接调用java执行ping命令获得结果的,至于HPUX上没有接触过,无法解释。
    如以下方法,是检测是否ping通服务器的: public static boolean pingServer(String server, long timeout) {
    BufferedReader in = null;
    Runtime r = Runtime.getRuntime(); String pingCommand = "ping " + server + " -w " + timeout; try {
    Process p = r.exec(pingCommand);
    if (p == null) {
    return false;
    }
    in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = in.readLine()) != null) {
    if (line.startsWith("Reply from")) {
    return true;
    }
    }
    in.close();
    } catch (Exception ex) {
    return false;
    }
    }但是很遗憾的是,只能应用于windows操作系统,solaris无法运行
    但是solaris可以如下解决问题:try {
    String[] serverArray = server.split("\\.");
    byte[] ipByte = new byte[serverArray.length];
    for(int i = 0; i < serverArray.length; i++){
    ipByte[i] = (byte)Integer.parseInt(serverArray[i]);
    }
    InetAddress address = InetAddress.getByAddress("" ,ipByte);
    return address.isReachable((int)timeout*1000);
    } catch (Exception e){
    return false;
    }
    以上是我在项目中的实际经验,希望对楼主有所帮助
      

  2.   

    很肯定的告诉楼主,solaris上是无法直接调用java执行ping命令获得结果的,至于HPUX上没有接触过,无法解释。
    如以下方法,是检测是否ping通服务器的: public static boolean pingServer(String server, long timeout) {
    BufferedReader in = null;
    Runtime r = Runtime.getRuntime(); String pingCommand = "ping " + server + " -w " + timeout; try {
    Process p = r.exec(pingCommand);
    if (p == null) {
    return false;
    }
    in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = in.readLine()) != null) {
    if (line.startsWith("Reply from")) {
    return true;
    }
    }
    in.close();
    } catch (Exception ex) {
    return false;
    }
    }但是很遗憾的是,只能应用于windows操作系统,solaris无法运行
    但是solaris可以如下解决问题:try {
    String[] serverArray = server.split("\\.");
    byte[] ipByte = new byte[serverArray.length];
    for(int i = 0; i < serverArray.length; i++){
    ipByte[i] = (byte)Integer.parseInt(serverArray[i]);
    }
    InetAddress address = InetAddress.getByAddress("" ,ipByte);
    return address.isReachable((int)timeout*1000);
    } catch (Exception e){
    return false;
    }
    以上是我在项目中的实际经验,希望对楼主有所帮助
      

  3.   

    很肯定的告诉楼主,solaris上是无法直接调用java执行ping命令获得结果的,至于HPUX上没有接触过,无法解释。
    如以下方法,是检测是否ping通服务器的: public static boolean pingServer(String server, long timeout) {
    BufferedReader in = null;
    Runtime r = Runtime.getRuntime(); String pingCommand = "ping " + server + " -w " + timeout; try {
    Process p = r.exec(pingCommand);
    if (p == null) {
    return false;
    }
    in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = in.readLine()) != null) {
    if (line.startsWith("Reply from")) {
    return true;
    }
    }
    in.close();
    } catch (Exception ex) {
    return false;
    }
    }但是很遗憾的是,只能应用于windows操作系统,solaris无法运行
    但是solaris可以如下解决问题:try {
    String[] serverArray = server.split("\\.");
    byte[] ipByte = new byte[serverArray.length];
    for(int i = 0; i < serverArray.length; i++){
    ipByte[i] = (byte)Integer.parseInt(serverArray[i]);
    }
    InetAddress address = InetAddress.getByAddress("" ,ipByte);
    return address.isReachable((int)timeout*1000);
    } catch (Exception e){
    return false;
    }
    以上是我在项目中的实际经验,希望对楼主有所帮助
      

  4.   

    很肯定的告诉楼主,solaris上是无法直接调用java执行ping命令获得结果的,至于HPUX上没有接触过,无法解释。
    如以下方法,是检测是否ping通服务器的: public static boolean pingServer(String server, long timeout) {
    BufferedReader in = null;
    Runtime r = Runtime.getRuntime(); String pingCommand = "ping " + server + " -w " + timeout; try {
    Process p = r.exec(pingCommand);
    if (p == null) {
    return false;
    }
    in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = in.readLine()) != null) {
    if (line.startsWith("Reply from")) {
    return true;
    }
    }
    in.close();
    } catch (Exception ex) {
    return false;
    }
    }但是很遗憾的是,只能应用于windows操作系统,solaris无法运行
    但是solaris可以如下解决问题:try {
    String[] serverArray = server.split("\\.");
    byte[] ipByte = new byte[serverArray.length];
    for(int i = 0; i < serverArray.length; i++){
    ipByte[i] = (byte)Integer.parseInt(serverArray[i]);
    }
    InetAddress address = InetAddress.getByAddress("" ,ipByte);
    return address.isReachable((int)timeout*1000);
    } catch (Exception e){
    return false;
    }
    以上是我在项目中的实际经验,希望对楼主有所帮助
      

  5.   

    很肯定的告诉楼主,solaris上是无法直接调用java执行ping命令获得结果的,至于HPUX上没有接触过,无法解释。
    如以下方法,是检测是否ping通服务器的: public static boolean pingServer(String server, long timeout) {
    BufferedReader in = null;
    Runtime r = Runtime.getRuntime(); String pingCommand = "ping " + server + " -w " + timeout; try {
    Process p = r.exec(pingCommand);
    if (p == null) {
    return false;
    }
    in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = in.readLine()) != null) {
    if (line.startsWith("Reply from")) {
    return true;
    }
    }
    in.close();
    } catch (Exception ex) {
    return false;
    }
    }但是很遗憾的是,只能应用于windows操作系统,solaris无法运行
    但是solaris可以如下解决问题:try {
    String[] serverArray = server.split("\\.");
    byte[] ipByte = new byte[serverArray.length];
    for(int i = 0; i < serverArray.length; i++){
    ipByte[i] = (byte)Integer.parseInt(serverArray[i]);
    }
    InetAddress address = InetAddress.getByAddress("" ,ipByte);
    return address.isReachable((int)timeout*1000);
    } catch (Exception e){
    return false;
    }
    以上是我在项目中的实际经验,希望对楼主有所帮助
      

  6.   

    出怪事了,我这里老是显示发送帖子失败,害我好几连,sorry了
      

  7.   

    我不知道是否可以在solaris上面跑java程序调dos窗口(弹出dos)ping。java里面只有exec()方法可以用,可不可以用我如下写的方法来实现我想要的功能。
    Runtime.getRuntime().exec("solaris下的ping命令");
    那么这个solaris下的ping命令是什么?可不可以这样写?
    Runtime.getRuntime().exec("dtterm dtterm -e sh -c start ping -s 127.0.0.1");c++的可以这样写,execlp("dtterm", "dtterm", "-e", "sh", "-c", “ping –s 127.0.0.1“, (char *)0)
    那java怎么写?
      

  8.   

    hp-ux下
    public class Test
    {
            public static void main(String[] args) throws Exception
            {
                    Process p  = Runtime.getRuntime().exec("/usr/dt/bin/dtterm -e /usr/sbin/ping 127.0.0.1 -n 5");
                    p.waitFor();
            }
    }
    实现弹出新窗口ping 5次
    aix下
    public class Test
    {
            public static void main(String[] args) throws Exception
            {
                    Process p  = Runtime.getRuntime().exec("/usr/dt/bin/dtterm -e /etc/ping -c 5 127.0.0.1");
                    p.waitFor();
            }
    }
    实现弹出新窗口ping 5次。
    实在是没有solaris的环境,上面两个都验证过了。
    注意dtterm和ping的命令的位置写上绝对路径就可以了
    whereis dtterm
    which dtterm
    这两个命令可以帮你找到它们在哪里