วิธีการหาค่า IP ของเราเตอร์/เกตเวย์
ใน Java
ถ้าคุณเป็นนักพัฒนา Java คุณอาจพบว่าคุณจำเป็นต้องค้นหาที่อยู่ IP ของเราเตอร์หรือเกตเวย์ของคุณบ้างเป็นครั้งคราว แม้ว่าภารกิจนี้จะสามารถทำได้ง่ายในภาษาการเขียนโปรแกรมอื่น ๆ เช่น .NET แต่การทำเช่นนี้ใน Java จำเป็นต้องใช้ความละเอียดอ่อนมากขึ้น ในบล็อกโพสต์นี้ เราจะพาคุณผ่านวิธีการที่เรียบง่ายในการทำเช่นนี้โดยใช้ Java เพื่อให้คุณสามารถเข้าถึงที่อยู่ IP ของเกตเวย์ได้อย่างง่ายดายเมื่อจำเป็น
ทำความเข้าใจกับปัญหา
เมื่อคุณเชื่อมต่อกับเครือข่าย เราเตอร์ของคุณทำหน้าที่เป็นเกตเวย์ระหว่างอุปกรณ์ท้องถิ่นของคุณและอินเทอร์เน็ต เมื่ออยู่ดีอุปกรณ์แต่ละตัวในเครือข่ายของคุณมักจะมีที่อยู่ IP ที่ไม่ซ้ำกัน แต่ที่อยู่ IP ของเราเตอร์นั้นมีความสำคัญสำหรับการส่งข้อมูลไปยังและจากเว็บไซต์ภายนอก
ถึงแม้ว่าคุณจะสามารถค้นหาที่อยู่ IP ของอุปกรณ์ของคุณหรือแม้กระทั่งที่อยู่ IP สาธารณะของคุณผ่านบริการออนไลน์หลายแห่ง การค้นหาที่อยู่ IP ของเกตเวย์ของคุณไม่ใช่เรื่องง่ายใน Java ดังนั้น คุณจะดึงข้อมูลนี้ได้อย่างมีประสิทธิภาพได้อย่างไร? มาดำดิ่งสู่แนวทางแก้ไขกันเถอะ!
การใช้ Java เพื่อค้นหาที่อยู่ IP ของเกตเวย์ของคุณ
แนวทางที่เราจะใช้คือการเรียกใช้เครื่องมือเชิงคำสั่งผ่าน Java ซึ่งใช้คำสั่ง traceroute
คำสั่งนี้มีประโยชน์ในการระบุเส้นทางที่แพ็คเกจข้อมูลใช้เพื่อไปถึงจุดหมาย โดยที่ฮอปแรกในเส้นทางนั้นมักจะเป็นที่อยู่ IP ของเราเตอร์ของคุณ
ขั้นตอนที่สำคัญในการแก้ปัญหา
-
ตั้งค่าสภาพแวดล้อม Java ของคุณ: ตรวจสอบให้แน่ใจว่าคุณติดตั้ง Java บนเครื่องของคุณและสามารถรันโปรแกรม Java ได้
-
นำเข้าห้องสมุดที่จำเป็น: คุณจำเป็นต้องนำเข้าคลาสสำหรับการป้อนข้อมูล/ส่งออก และยูทิลิตี้สำหรับการจัดการสตริง
import java.io.*; import java.util.*;
-
เขียนคลาสหลัก: คุณจะสร้างคลาส (เช่น
ExecTest
) และสร้างเมธอดหลักที่คำสั่งจะถูกเรียกใช้ -
เรียกใช้คำสั่ง: ใช้คลาส
Runtime
ของ Java เพื่อเรียกใช้คำสั่งtraceroute
public class ExecTest { public static void main(String[] args) throws IOException { Process result = Runtime.getRuntime().exec("traceroute -m 1 www.amazon.com"); // โค้ดเพิ่มเติมในการประมวลผลผลลัพธ์... } }
-
อ่านผลลัพธ์: จับผลลัพธ์ของคำสั่งโดยใช้
BufferedReader
. เราจะอ่านบรรทัดแรกซึ่งมีข้อมูลที่เราต้องการBufferedReader output = new BufferedReader(new InputStreamReader(result.getInputStream())); String thisLine = output.readLine();
-
ดึงข้อมูลที่อยู่ IP ของเกตเวย์: ใช้
StringTokenizer
เพื่อวิเคราะห์บรรทัดและดึงโทเคนที่สอง (สมมุติว่าจุดหมายปลายทางอยู่ที่ดัชนีแรก)StringTokenizer st = new StringTokenizer(thisLine); st.nextToken(); // ข้ามโทเคนแรก (ชื่อโฮสของจุดหมายปลายทาง) String gateway = st.nextToken(); // นี่ควรจะเป็นที่อยู่ IP ของเกตเวย์ System.out.printf("The gateway is %s\n", gateway);
ตัวอย่างโค้ดที่สมบูรณ์
นี่คือตัวอย่างโค้ดที่สมบูรณ์สำหรับอ้างอิงของคุณ:
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(); // ข้ามโทเคนแรก
String gateway = st.nextToken(); // รับที่อยู่ IP ของเกตเวย์
System.out.printf("The gateway is %s\n", gateway);
}
}
ข้อพิจารณาที่สำคัญ
-
การปรับการวิเคราะห์ผลลัพธ์: ขึ้นอยู่กับการกำหนดค่าระบบของคุณและผลลัพธ์จาก
traceroute
ที่อยู่เกตเวย์อาจอยู่ในตำแหน่งที่แตกต่างกัน หากคุณพบว่ามันอยู่ในตำแหน่งที่สาม คุณอาจต้องเรียกใช้st.nextToken()
อีกครั้งเพื่อปรับ -
สิทธิ์เครือข่าย: ตรวจสอบให้แน่ใจว่าแอปพลิเคชัน Java ของคุณมีสิทธิ์ที่จำเป็นในการเรียกใช้คำสั่งของระบบ
สรุป
การหาค่า IP address ของเราเตอร์/เกตเวย์
ใน Java อาจไม่ง่ายเหมือนในภาษาการเขียนโปรแกรมอื่น ๆ แต่ด้วยวิธีการที่อธิบายไว้ข้างต้น คุณสามารถดึงข้อมูลนี้ได้อย่างสบายใจ โดยการรวม Runtime
ของ Java เพื่อเรียกใช้คำสั่งเชลล์กับการวิเคราะห์อย่างระมัดระวัง คุณสามารถดึงข้อมูลที่คุณต้องการได้อย่างมีประสิทธิภาพ ขอให้สนุกกับการเขียนโค้ด!