別のJavaプログラム内でプログラムを開始する方法が初めてです! そして、私はそれを呼び出す方法がわかりません。最初の質問は、新しいスレッド内でそれを行う必要があるということですか? 2 番目の質問は、新しいプログラムを呼び出す方法です。呼び出したいプログラムは「wondershaper」です。このプログラムを実行するために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」内にレートを入れてプログラムを起動します