我是如何在另一个java程序中启动程序的新手!我不知道如何称呼它。第一个问题是我必须在一个新线程中做到这一点?第二个问题是如何调用新程序。我想打电话的节目是“奇迹之夜”。我使用ubuntu 12.04来运行这个程序,并在命令行中编写。 “sudo wondershaper eth0 10000 1000”。 我如何在一般程序中写出来? 我有一台服务器,我想处理它的速度!这就是我使用它的原因。所以我有一个多线程服务器,代码是
class Client extends Thread {
private Socket connectionSocket;
public Client(Socket c) throws IOException {
connectionSocket = c;
}
public void run() {
String path = "C:/pao/new2/";
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
try {
String fileToSendStr = readFile();
File fileToSend = null;
for (File f : listOfFiles)
{
if (f.getName().equals(fileToSendStr)) {
fileToSend = f;
break;
}
}
//System.out.println("Connescting to Client to recieve the part " +fileToSendStr);
if (fileToSend == null) {
}
System.out.println("Sending the chunk to Client " + fileToSendStr + "to the client: " +connectionSocket.getRemoteSocketAddress().toString());
java.util.Date date= new java.util.Date();
System.out.println(new Timestamp(date.getTime()));
long length = fileToSend.length();
byte [] longBytes = new byte[8];
ByteBuffer bbuffer = ByteBuffer.wrap(longBytes);
bbuffer.putLong(length);
connectionSocket.getOutputStream().write(longBytes);
BufferedOutputStream bout = new BufferedOutputStream(connectionSocket.getOutputStream());
BufferedInputStream bain = new BufferedInputStream(new FileInputStream(fileToSend));
byte buffer [] = new byte [1024];
int i = 0;
while((i = bain.read(buffer, 0, 1024)) >= 0){
bout.write(buffer, 0, i);
}
System.out.println("chunk sended");
java.util.Date date1= new java.util.Date();
System.out.println(new Timestamp(date1.getTime()));
bout.close();
bain.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private String readFile() throws IOException {
BufferedReader r = new BufferedReader(new InputStreamReader(
connectionSocket.getInputStream()));
return r.readLine();
}
}
所以当我读readFile时,客户端发送给我的是什么。如果是启动“wondershaper”的汇率字符串并将汇率放入“sudo wondershaper eth0 10000 rate”并启动程序
答案 0 :(得分:1)
Process aProcess = Runtime.getRuntime().exec("cmd");
//您可以在此处传递任何流程
你也可以阅读这个程序的输出。
InputStream is = aProcess.getInputStream();
Ps:您可以传递任何进程以及参数,但是您无法传递类似>>,2>的内容。或者或像*
这样的外卡- 来自评论