2011-11-15 5 views
6

Tôi cần thông tin cấu hình Mạng trong ứng dụng của tôi nhiều hơn số java.net.NetworkInterfacejava.net.InetAddress cung cấp. Tôi muốn bao gồm các thông tin như Subnet, Gateway, và các máy chủ DNS, nhưng mã cần phải được di động cho cả hai nền tảng Windows và Linux.Nhận thông tin mạng trong Java trên nền tảng Windows và Linux

Tôi đã xem xét thực hiện việc này bằng cách thực hiện Runtime.getRuntime().exec("ipconfig") cho Windows và Runtime.getRuntime().exec("ifconfig") cho Linux và phân tích kết quả. Có lẽ có một cách tốt hơn để làm điều này hoặc một dự án mã nguồn mở mà tôi có thể sử dụng.

Cảm ơn trước cho bất kỳ ý tưởng nào có thể hướng tôi đi đúng hướng

+0

gọi ifconfig và ipconfig phá vỡ việc sử dụng tính di động. Bạn có thể đăng những gì mã bạn hiện đang có? – Woot4Moo

+0

Tôi đã thực hiện một phương pháp nhà máy để gọi vào các triển khai riêng biệt cho từng hệ điều hành. Đối với các cửa sổ, tôi đang gọi 'ipconfig/all' và phân tích kết quả. Đối với Linux, tôi đang gọi 'ifconfig', 'route -n' và 'cat /etc/resolv.conf'. –

+1

Ngoài ra, cài đặt mặc định của một số bản phân phối Linux không bao gồm/sbin trong đường dẫn, do đó, việc gọi có thể không thành công tùy thuộc vào người dùng –

Trả lời

0

Bạn có thể làm trong mã gốc và sử dụng JNI. Sau đó gửi một .dll cho các cửa sổ, và một .so (hoặc mã nguồn) cho Linux, mặc dù điều này có lẽ không phải là tốt hơn rất nhiều so với giải pháp 'exec'.

1

Nếu bạn đang nghĩ đến một giải pháp tốt hơn và mạnh mẽ hơn, bạn có thể sử dụng ý tưởng SNMP (Giao thức quản lý mạng đơn giản) .Có một số API có sẵn để sử dụng, SNMP4J là nguồn mở và nổi tiếng nhất. được hỗ trợ trên nhiều hệ điều hành và thậm chí cả các switch và router, có lẽ bạn nên sử dụng nó trong các thống kê mức độ mạng. Nhưng nếu bạn muốn một giải pháp đơn giản hơn thì hãy sử dụng Sigar API, hỗ trợ nhiều hệ điều hành bao gồm cả windows và linux.Một vấn đề với Sigar là nó được cấp phép theo GPL mà cấm bạn triển khai nó trong một dự án thương mại.

+0

SNMP là tốt miễn là người dùng của phần mềm không phải cài đặt và cấu hình nó .. SIGAR có vẻ tốt và chắc chắn dễ làm việc hơn là phải đối phó với các API mức thấp đặc trưng cho hệ điều hành cao. Ví dụ. api netlink Linux có thể cung cấp hầu hết thông tin, nhưng khá khủng khiếp. – bew

+0

@Madhu Sudhan Sigar gói có giấy phép Apache 2.0 bên trong. Bạn có chắc chắn về GPL? – tuxSlayer

+0

Tôi không chắc chắn về việc cấp phép, nhưng tôi nghĩ rằng nó không thể được triển khai trong một dự án thương mại.Chỉ cần thả một thư đến nhóm bán hàng sigar về việc cấp phép. Tôi chắc chắn rằng họ có thể giúp bạn tốt hơn trong trường hợp này. – Madusudanan