2013-05-29 67 views
0

從Java程序中,我想測試具有特定IP地址和端口的交換機是否可用於telnet。所以計劃運行telnet並退出。如果它出現「無法打開連接」或「連接失敗」的錯誤,我們無法訪問交換機。如果不給出任何錯誤,則可以通過telnet訪問。telnet到Windows中的一個java程序的開關並獲得輸出

我執行下面的代碼,

Process p = Runtime.getRuntime().exec("cmd /C telnet "+IP+ " " +port); 
//Process p = Runtime.getRuntime().exec("cmd /C ver"); 
p.waitFor(); 
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); 
String line; 
while ((line = in.readLine()) != null) { 
System.out.println(line); 
} 
in.close(); 

但它沒有給出任何輸出是否是可用。當我在命令提示符下運行相同的telnet命令時,它工作正常。但從Java不起作用。

聲明,

Process p = Runtime.getRuntime().exec("cmd /C ver"); 

工作正常,並還給版本。

我不知道我該如何telnet到交換機並退出並找回錯誤以查看它是否可用。

感謝, Peeyush

回答

0

,而不是調用telnet命令,你可以只使用Java裏面的插座,並嘗試打開到所需的主機和端口的連接。 如果不需要對控制代碼進行特殊處理,這將適用於大多數情況。

作爲替代方案:Apache Commons Net包含一個java telnet客戶端庫。

+0

嘿謝謝你的回覆。但是這需要服務器在主機端口上運行才能接受連接權限?我們不想這樣做。 我的理解正確嗎? – Peeyushpd

+0

你不需要在服務器端改變任何東西。如果服務器(在你的情況下交換機)接受連接,你可以使用它,否則你會得到一些關於它的異常或通知。 – mschenk74

+0

嘿,謝謝,這很容易。 :) 如果成功,它會正常執行,否則會發生IOException。 – Peeyushpd

相關問題