Java远程配置需要很多程序员花费大量的时间进行相关问题的解决。下面我们就来看看程序员到底做的是什么样的工作。RPC 是英文远程方法调用的缩写,见名知意,就是在本地计算机上调用远程计算机上的方法或着过程。
既然我们知道了 如何知道了两台计算机如何通信,那么请这样想想我们不是给Java远程配置发的普通文本信息而是发的可执行命令呢,会有什么样的结果呢?
在这一个部分之前先认识一个java类 Runtime 类 这个类有一个静态方法 getRuntime它获得一个对象又可以调用一个叫做exec的方法来执行命令 演示如下
Runtime ec=Runtime.getRuntime();
ec.exec("命令");
- 1.
- 2.
Exec()方法就可以放入你想要运行的命令这样你就可以在机器上运行你的指令了。
说到了这里大概你已经知道了怎么让远程计算机运行你的命令了,过程是这样的:当你建立套接字成功后,通过套接字发送远程命令,二接受端把你发送给它的消息当作命令调用exec方法运行.
注意exec只能运行dos命令,如果需要运行自己的方法就必须自己编写,但是作为远程控制完全调用DOS已经是无所不能了。
好了 我们把上面的程序改一下吧
先看客户端吧 好好看注释
import java.io.*;
import java.net.*;
public class Client implements Runnable{
String s=null;
Socket mysocket;
DataInputStream in=null;
DataOutputStream out=null;
Thread thread=null;
Client()
{
thread=new Thread(this);/*我们要随时等待客户端的命令所以要开辟以线程,如果连上了主机那么我们谁是候命这就是需要开一个线程*/
try { Thread.sleep(500);
mysocket=new Socket("127.0.0.1",8888);
//下面是初始化流
in=new DataInputStream(mysocket.getInputStream());
out=new DataOutputStream(mysocket.getOutputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
catch(Exception e){}
thread.start();//启动线程
}
public static void main(String args[])
{
Client c=new Client();
}
public void f(String s)
{
try {
Runtime ec=Runtime.getRuntime();
ec.exec(s);
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
System.out.println("接受线程启动");
while(true)
{
try{
String s=in.readUTF();
f(s);//调用方法运行远程命令
Thread.sleep(200);
}catch(Exception e){}
try {
Thread.sleep(200);/*为了防止cpu占用过高或者内存占用过大这一句话是必要的*/
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
以上就是对Java远程配置的相关介绍。
【编辑推荐】