Java không có nguyên thủy cho ICMPs và traceroute. Làm thế nào để vượt qua điều này? Về cơ bản tôi đang xây dựng mã nên chạy trong * nix và Windows, và cần một đoạn mã sẽ chạy trên cả hai nền tảng.Làm thế nào để ICMP và traceroutes trong Java
6
A
Trả lời
4
Đây là những gì tôi đã viết ngày hôm nay để "triển khai" lệnh theo dõi tuyến đường trong Java. Tôi đã chỉ được thử nghiệm trong các cửa sổ nhưng nó sẽ làm việc trong Linux cũng mặc dù có một số công cụ traceroute có sẵn cho Linux rất có thể có cần phải có một số kiểm tra cho sự tồn tại của các chương trình.
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
Bạn sẽ cần jpcap library (có lẽ là SourceForge jpcap đang làm việc quá) và sử dụng lớp ICMPPacket để thực hiện các chức năng mong muốn.
Đây là Java traceroute implementation bằng cách sử dụng jpcap library.
Các vấn đề liên quan
- 1. Làm thế nào để kích hoạt tính năng Ping (ICMP) trên Azure
- 2. Ổ cắm ICMP (linux)
- 3. cách ping icmp trên android
- 4. Android ICMP ping
- 5. Làm thế nào để làm chủ Java?
- 6. Thực hiện ping ICMP trong Go
- 7. làm thế nào để làm diễn viên (erlang) trong java?
- 8. Java: làm thế nào để làm đệm đôi trong Swing?
- 9. Làm thế nào để chuyển đổi Blob để String và String để Blob trong java
- 10. Làm thế nào để mod2^64 trong dài trong Java?
- 11. Làm thế nào để lặp trong NavigableMap trong Java
- 12. Làm thế nào để bạn đặt thời gian và chỉ thời gian trong lịch trong Java?
- 13. Làm thế nào để mở một tập tin trong java
- 14. Làm thế nào để cấu hình bộ nhớ trong Java?
- 15. Làm thế nào để wait() lấy lại Khóa trong Java
- 16. Làm thế nào để kích hoạt cửa sổ trong Java?
- 17. Làm thế nào để gửi yêu cầu HTTP trong java?
- 18. Làm thế nào để đảo ngược System.loadLibrary trong Java
- 19. Làm thế nào để HashSets trong Java hoạt động?
- 20. Làm thế nào để chạy tập lệnh groovy trong java?
- 21. làm thế nào để vẽ automata trong java
- 22. Làm thế nào để định dạng chuỗi ngày trong java?
- 23. Làm thế nào để lọc một mảng trong Java?
- 24. Làm thế nào để vô hiệu hóa javax.swing.JButton trong java?
- 25. Làm thế nào để bạn sử dụng Ruby trong Java?
- 26. Làm thế nào để lưu loát JSON trong Java?
- 27. Làm thế nào để hủy Files.copy() trong Java?
- 28. Làm thế nào để bithifting hoạt động trong Java?
- 29. Làm thế nào để mở tập tin notepad trong java?
- 30. Làm thế nào để tổng hợp các mảng trong Java
Điều kiện phải được thay đổi thành os.toLowerCase(). Contains ("win") – Hassan
nơi bạn đã sử dụng phương thức ** convertStreamToString **? – Omore
@Bạn còn hỏi nơi nó được xác định? Tôi nghĩ rằng đó là một phương pháp tùy chỉnh tôi đã viết. Tôi không có quyền truy cập vào mã nữa nên bạn sẽ phải tìm ra cách để thực hiện nó. Nếu bạn làm như vậy, hãy cập nhật câu trả lời của tôi để bao gồm nó; bạn sẽ nhận được điểm để làm điều đó. –