Я новичок в том, как запустить программу внутри другой Java-программы! и я не знаю, как это назвать. Первый вопрос заключается в том, что я должен делать это в новом потоке? второй вопрос - как вызвать новую программу. Программа, которую я хочу назвать, - «wondershaper». Я использую ubuntu 12.04 для запуска этой программы и в командной строке, которую я пишу. «sudo wondershaper eth0 10000 1000». Как я могу написать его внутри общей программы? У меня есть сервер, с которым я хочу справиться со скоростью! вот почему я его использую. Таким образом, у меня есть многопоточный сервер и кодКак запустить внешнюю программу внутри java-программы
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 скорости» и запустить программу
Я не уверен на 100%, но, я думаю, вы ищете класс процессов Java. –
Связанный вопрос: http://stackoverflow.com/questions/3643939/java-process-with-input-output-stream –
Спасибо, я этого не видел! –