各位师兄:
大家好,现在要做一个远程调用API取数据的程序。以前从来没有做过,真是一头雾水啊.需求是远程连接上服务器(IP如:202.101.XXX.XXX),用户名为:apitest 密码为:apipwd 登录成功后,直接运行指令:/opt/MagellanNMS/bin/gmdrapi,然后再输入指令:CREATE,即可收取数据了.
可是如何用JAVA程序来实现呢?听说Runtime.getRuntime().exec是来调用指令的,但不知如何用,还有就是,当输入指令:CREATE,即可收取数据了.要用什么来接收这些数据传回程序呢?嗨,真是从没搞过这东西,以前只做过SOCKET的方式收发数据.希望各位帮忙了,万分感谢.
大家好,现在要做一个远程调用API取数据的程序。以前从来没有做过,真是一头雾水啊.需求是远程连接上服务器(IP如:202.101.XXX.XXX),用户名为:apitest 密码为:apipwd 登录成功后,直接运行指令:/opt/MagellanNMS/bin/gmdrapi,然后再输入指令:CREATE,即可收取数据了.
可是如何用JAVA程序来实现呢?听说Runtime.getRuntime().exec是来调用指令的,但不知如何用,还有就是,当输入指令:CREATE,即可收取数据了.要用什么来接收这些数据传回程序呢?嗨,真是从没搞过这东西,以前只做过SOCKET的方式收发数据.希望各位帮忙了,万分感谢.
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是什么类型的变量,做什么的?
还有就是现在的问题是:我只能做客户端,服务端是厂家定好的,就是一个API程序,我的客户端登录到他所指定的IP后(输入用户名和密码成功登录后),就直接调用他们的API即/opt/MagellanNMS/bin/gmdrapi,然后就是输入这个API中具体的指令如(CREATE即收取数据)。所以我没办法像以前写SOCKET程序那样自己来定义双方的通信协议。
我是想
1、既然Runtime.getRuntime().exec是调用命令行的命令的方法,就如同你在WINDOWS下打开CMD然后输入notepad一样,那么能不能在我的客户端程序里用Runtime.getRuntime().exec来运行:telnet 202.101.XXX.XXX,然后输入用户名和密码(用户名为:apitest 密码为:apipwd ),成功后就运行/opt/MagellanNMS/bin/gmdrapi,调用API,最后运行具体指令如CREATE
2、如果上述方法可行,那么我在运行了CREATE后,客户端如何将收取的数据信息得到呢?