1
我正在爲sipp命令行程序編寫Java接口。我目前的代碼是:從java運行sipp
ProcessBuilder builder = new ProcessBuilder("sipp", "-sn uac",
"127.0.0.1");
Map<String, String> environment = builder.environment();
Process javap = builder.start();
InputStreamReader tempReader = new InputStreamReader(new BufferedInputStream(javap.getInputStream()));
BufferedReader reader = new BufferedReader(tempReader);
while (true){
String line = reader.readLine();
if (line == null)
break;
System.out.println(line);
}
這對我不適用想,我有sipp環境變量集,所以這不是問題。標準輸出是sipp的幫助信息。我究竟做錯了什麼?另外我想知道,一旦我運行了sipp,是否可以將參數傳遞給與之關聯的processBuilder對象,以便我可以更改調用率?即sipp讓用戶通過按+, - ,*來更改通話費率,這可能嗎?
非常感謝你做了這個訣竅的答案,這些命令的類型是「q」「+」e.t.c.所以如果我從進程中獲取outputStream然後執行「String test =」q「; javap.getOutputStream()。write(test.getBytes());」這應該工作正確嗎? – maxsap 2011-03-25 13:22:53
@maxsap - 假設「sipp」期望數據來自標準輸入數據,那麼應該工作得非常類似(我必須對其進行測試才能確定)。您可能還需要在每個輸出流之後調用'flush'寫。 – 2011-03-25 14:00:12
是的我忘了寫flush命令,我試圖用這個命令來運行這個過程:ProcessBuilder builder = new ProcessBuilder(path.trim(),「127.0.0.1:5060」,「-sf」,「scenario。 xml「,」 - i「,」127.0.0.1「,」 - p「,」5050「,」-r「,」1「,」 - m「,」1000000「);這是一個標準命令(直接從命令行運行),但是當我嘗試運行它時,java會返回null,所以代碼退出。這真的很奇怪,因爲其他命令可以很好地工作,sipp位於/ usr/bin? – maxsap 2011-03-25 14:25:54