다른 Java 프로그램 내에서 프로그램을 시작하는 방법에 대한 새로운 소식입니다! 나는 그것을 어떻게 부르는 지 모른다. 첫 번째 질문은 새 스레드 안에서해야한다는 것입니다. 두 번째 질문은 새 프로그램을 호출하는 방법입니다. 내가 전화하기를 원하는 프로그램은 "경이로운 일"입니다. 나는이 프로그램을 실행하기 위해 우분투 12.04를 사용하고 커맨드 라인에는 내가 씁니다. "sudo wondershaper eth0 10000 1000". 일반 프로그램에 어떻게 쓸 수 있습니까? 나는 그것의 비율을 처리하고 싶은 서버가있다! 내가 그것을 사용하는 이유. 그래서 나는 멀티 스레드 서버를 가지고 내가 나에게 보내는 어떤 클라이언트 ReadFile을 읽을 때 코드가 너무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();
}
}
입니다. 이 경우 속도 문자열이 "wondershaper"를 시작하고 "sudo는 wondershaper eth0를 10000 속도"내부의 속도를 넣고 프로그램
나는 100 % 확실하지 않지만 당신은 자바의 프로세스 클래스를 찾고있는 것 같아요. –
관련 질문 : http://stackoverflow.com/questions/3643939/java-process-with-input-output-stream –
감사합니다. 나는 그것을 보지 못했습니다! –