Java’da Router/Gateway IP'sini Belirleme
Eğer bir Java geliştiricisiyseniz, zaman zaman router’ınızın veya geçidinizin IP adresini belirlemeniz gerekebilir. Bu görev, .NET gibi diğer programlama dillerinde oldukça basit olsa da, Java’da daha fazla incelik gerektirmektedir. Bu blog yazısında, bunu Java kullanarak nasıl kolayca yapabileceğinizi adım adım göstereceğiz, böylece gerektiğinde geçidinizin IP adresine erişebilirsiniz.
Problemi Anlamak
Bir ağa bağlandığınızda, router’ınız yerel cihazınız ile daha geniş internet arasında bir geçit görevi görür. Ağınızdaki her cihaz genellikle kendi benzersiz IP adresine sahiptir, ancak router’ın IP adresi, harici sitelere giden ve gelen trafiği yönlendirmek için gereklidir.
Cihazınızın IP adresini veya hatta genel internet IP adresinizi çeşitli çevrimiçi hizmetler aracılığıyla kolayca belirleyebilirken, geçidinizin IP adresini bulmak Java’da bu kadar basit değildir. Peki, bu bilgiyi verimli bir şekilde nasıl elde edebilirsiniz? Çözümün içine dalalım!
Java Kullanarak Geçit IP’sini Bulma
Alacağımız yaklaşım, Java aracılığıyla bir komut satırı aracını çalıştırmayı içerir; özellikle traceroute
komutunu kullanacağız. Bu komut, paketlerin bir hedefe ulaşmak için aldığı yolu tespit etmekte yararlıdır ve bu yol üzerindeki ilk adım genellikle router’ınızın IP adresidir.
Adım Adım Çözüm
-
Java Ortamınızı Kurun: Makinenizde Java yüklü olduğundan emin olun ve Java programlarını çalıştırabiliyor olun.
-
Gerekli Kütüphaneleri İçe Aktarın: Giriş/çıkış için sınıfları ve dize manipülasyonu için kullanışlı sınıfları içe aktarmanız gerekecek.
import java.io.*; import java.util.*;
-
Ana Sınıfı Yazın: Bir sınıf oluşturacaksınız (örneğin,
ExecTest
) ve komutun çalıştırılacağı ana yöntemi (method) uygulayacaksınız. -
Komutu Çalıştırın: Java’nın
Runtime
sınıfını kullanaraktraceroute
komutunu çalıştırın.public class ExecTest { public static void main(String[] args) throws IOException { Process result = Runtime.getRuntime().exec("traceroute -m 1 www.amazon.com"); // sonucu işlemek için daha fazla kod... } }
-
Çıktıyı Okuyun: Komutun çıktısını
BufferedReader
kullanarak yakalayın. İhtiyacımız olan bilgiyi içeren ilk satırı okuyacağız.BufferedReader output = new BufferedReader(new InputStreamReader(result.getInputStream())); String thisLine = output.readLine();
-
Geçit IP’sini Çıkarın: Satırı ayrıştırmak ve ikinci token’ı almak için bir
StringTokenizer
kullanın (hedefin ilk indeks olduğunu varsayarsak).StringTokenizer st = new StringTokenizer(thisLine); st.nextToken(); // İlk token'ı (hedefin ana bilgisayar adı) atla String gateway = st.nextToken(); // Bu geçidinizin IP'si olmalı System.out.printf("Geçit IP'si %s\n", gateway);
Tam Kod Örneği
Referansınız için işte tam kod parçacığı:
import java.io.*;
import java.util.*;
public class ExecTest {
public static void main(String[] args) throws IOException {
Process result = Runtime.getRuntime().exec("traceroute -m 1 www.amazon.com");
BufferedReader output = new BufferedReader(new InputStreamReader(result.getInputStream()));
String thisLine = output.readLine();
StringTokenizer st = new StringTokenizer(thisLine);
st.nextToken(); // İlk token'ı atla
String gateway = st.nextToken(); // Geçit IP'sini al
System.out.printf("Geçit IP'si %s\n", gateway);
}
}
Önemli Hususlar
-
Çıktı Ayrıştırmasını Ayarlamak: Sistem yapılandırmanıza ve
traceroute
çıktısına bağlı olarak, geçit farklı bir konumda olabilir. Eğer üçüncü pozisyonda bulunduğunu tespit ederseniz, uyum sağlamak içinst.nextToken()
çağrısını bir kez daha yapmanız gerekebilir. -
Ağ İzinleri: Java uygulamanızın sistem komutlarını çalıştırmak için gerekli izinlere sahip olduğundan emin olun.
Sonuç
Java’da router/gateway IP adresinizi
belirlemek diğer dillerdeki kadar basit olmayabilir, ancak yukarıda belirtilen yöntemle bunu rahatlıkla elde edebilirsiniz. Java’nın Runtime
sınıfını kullanarak komutları çalıştırmayı ve dikkatli parsing ile birleştirerek, ihtiyacınız olan bilgileri etkili bir şekilde çıkarabilirsiniz. İyi kodlamalar!