Java沒有ICMP和跟蹤路由的原語。如何克服這一點?基本上,我構建的代碼應該在* nix和Windows中運行,並且需要一段可以在兩個平臺上運行的代碼。如何在Java中使用ICMP和跟蹤路由
6
A
回答
4
這是我今天寫的「實現」Java中的跟蹤路由命令。我只在Windows上測試過,但它也應該在Linux中工作,儘管有幾種traceroute工具可用於Linux,所以很可能需要對這些程序的存在進行一些檢查。
public class NetworkDiagnostics{
private final String os = System.getProperty("os.name").toLowerCase();
public String traceRoute(InetAddress address){
String route = "";
try {
Process traceRt;
if(os.contains("win")) traceRt = Runtime.getRuntime().exec("tracert " + address.getHostAddress());
else traceRt = Runtime.getRuntime().exec("traceroute " + address.getHostAddress());
// read the output from the command
route = convertStreamToString(traceRt.getInputStream());
// read any errors from the attempted command
String errors = convertStreamToString(traceRt.getErrorStream());
if(errors != "") LOGGER.error(errors);
}
catch (IOException e) {
LOGGER.error("error while performing trace route command", e);
}
return route;
}
1
你需要的jpcap library(也許SourceForge jpcap工作過),並使用ICMPPacket類來實現所需的功能。
相關問題
- 1. 在Python中創建ICMP跟蹤路由
- 2. Python中的ICMP跟蹤路由
- 3. 如何在Python中創建ICMP跟蹤路由
- 4. 如何在Angular 2中跟蹤路由?
- 5. 如何在adb shell中跟蹤路由?
- 6. MapKit:跟蹤路由
- 7. 跟蹤路由 - 序言
- 8. Python urllib2跟蹤路由
- 9. 跟蹤路由和數據包捕獲
- 10. 爲什麼跟蹤路由發送UDP數據包,而不是ICMP的呢?
- 11. 在apache中禁用跟蹤和跟蹤
- 12. Asp.Net MVC - 跟蹤路由中的ID
- 13. 在java中調用跟蹤
- 14. 使用Backbone路由器在網站上跟蹤AdWords的性能
- 15. 跟蹤路由VS平的時間差
- 16. 某個端口的跟蹤路由
- 17. java JTable如何跟蹤行
- 18. 如何跟蹤在Java中使用HttpSession的登錄嘗試?
- 19. 如何跟蹤NetBeans中由JAVA GC清除的對象?
- 20. 在Erlang中使用跟蹤和dbg
- 21. 跟蹤時間在Java中
- 22. 路由使用命名參數跟蹤的默認URL
- 23. 在SignalR中使用跟蹤
- 24. 在Global.asax中使用跟蹤
- 25. Java - 記錄和跟蹤
- 26. 如何使用Java EE跟蹤New Relic中的用戶
- 27. 如何跟蹤的時間在Java
- 28. 在mvc中跟蹤路由處理? (替代Glimpse?)
- 29. 在android中實現跟蹤路由功能
- 30. 如何在使用Firefox時跟蹤JS?
應將條件更改爲os.toLowerCase()。contains(「win」) – Hassan 2015-09-12 02:59:00
您在哪裏使用了** convertStreamToString **方法? – Omore 2018-01-25 19:26:29
@Omore你問問它在哪裏定義?我認爲這是我寫的一種自定義方法。我再也無法訪問代碼,所以你必須弄清楚如何實現它。如果你這樣做,請更新我的答案以包含它;你會得到這樣的積分。 – 2018-01-26 18:10:10