日期:2014-05-20  浏览次数:21271 次

如何用Runtime.getRuntime().exec来调用远程命令?
各位师兄:
    大家好,现在要做一个远程调用API取数据的程序。以前从来没有做过,真是一头雾水啊.需求是远程连接上服务器(IP如:202.101.XXX.XXX),用户名为:apitest   密码为:apipwd   登录成功后,直接运行指令:/opt/MagellanNMS/bin/gmdrapi,然后再输入指令:CREATE,即可收取数据了.
可是如何用JAVA程序来实现呢?听说Runtime.getRuntime().exec是来调用指令的,但不知如何用,还有就是,当输入指令:CREATE,即可收取数据了.要用什么来接收这些数据传回程序呢?嗨,真是从没搞过这东西,以前只做过SOCKET的方式收发数据.希望各位帮忙了,万分感谢.


------解决方案--------------------
Process.getInputStream
------解决方案--------------------
Runtime.getRuntime().exec是调用命令行的命令的方法,就如同你在WINDOWS下打开CMD然后输入notepad一样.在JAVA中两台机器互相通讯肯定是要通过流的.不知道你哪个CREATE是调的哪个程序?数据是什么形式的?
------解决方案--------------------
package mypro;

import java.io.*;
import java.net.*;

public class Client {
public static void main(String[] args) throws Exception {
//连接到服务端
java.net.Socket socket = new Socket( "127.0.0.1 ", 9999);

java.io.PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println( "ok ");
out.println( "C:/Program Files/Internet Explorer/IEXPLORE.EXE www.163.com ");
out.close();
socket.close();
}
}


package mypro;
import java.net.*;
import java.io.*;


public class Service {
//进程
static java.lang.Process p=null;
public static void main(String[] args)throws Exception{
//在服务建立一个socket,监听9999端口
java.net.ServerSocket s=new ServerSocket(9999);
while(true){
java.net.Socket socket = s.accept();
//获得从客服端发过来的输入的字节流
java.io.InputStream i = socket.getInputStream();
//将字节流转换为字符流
java.io.BufferedReader in = new BufferedReader(new InputStreamReader(i));

String cmd1 = in.readLine();
String cmd2 = in.readLine();
if (cmd1.equals( "ok ")) {
if (p == null) {
p = java.lang.Runtime.getRuntime().exec(cmd2);
}
}
else if (cmd1.equals( "no ")) {
if (p != null) {
p.destroy();
}
}
in.close();
i.close();
socket.close();
}
}
}

------解决方案--------------------
p是java.lang.Process类型的

------解决方案--------------------
我帮你up
------解决方案--------------------
up
up
------解决方案--------------------
友情
up