برنامج كاشف عناوين المواقع و الأجهزة IP Finder

برنامج كاشف عناوين المواقع و الأجهزة IP Finder





في هذا الدرس ستتعلم طريقة إنشاء برنامج IP Finder ) و الذي يمكن إستخدامه لجلب عنوان أي شيء متصل بالنت سواء كان سيرفر, حاسوب, هاتف إلخ..
java swing ip finder source code تحميل كود برنامج كاشف عناوين المواقع و الأجهزة في جافا

بناء البرنامج

في هذا المشروع قمنا بوضع ملف الجافا بداخل مجلد إسمه ip_finder.
و قمنا بوضع الصورة التي وضعناها كخلفية بداخل مجلد إسمه images كما في الصورة التالية.


كود البرنامج

Main.java


  1. // snake_2d موجود بداخل المجلد Main.java هنا ذكرنا أن الملف
  2. package ip_finder;
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.Font;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.net.InetAddress;
  9. import java.net.UnknownHostException;
  10. import javax.swing.BorderFactory;
  11. import javax.swing.ImageIcon;
  12. import javax.swing.JButton;
  13. import javax.swing.JFrame;
  14. import javax.swing.JLabel;
  15. import javax.swing.JPanel;
  16. import javax.swing.JTextField;
  17. import javax.swing.SwingUtilities;
  18. // و بالتالي أصبح إنشاء كائن منه يمثل إنشاء نافذة JFrame يرث من الكلاس Main هنا جعلنا الكلاس
  19. public class Main extends JFrame implements ActionListener {
  20. // هنا قمنا بتعريف الأشياء التي سيتم وضعها في النافذة
  21. JPanel backgroundPanel;
  22. JLabel label, labelResult, backgroundImage;
  23. JTextField textField;
  24. JButton buttonFind;
  25. // فقط createAndShowGUI() سيقوم الكونستركتور بإستدعاء الدالة Main عند إنشاء كائن من الكلاس
  26. public Main() {
  27. createAndShowGUI();
  28. }
  29. public static void main(String[] args) {
  30. SwingUtilities.invokeLater(new Runnable() {
  31. @Override
  32. public void run() {
  33. // التي ستنشئ النافذة createAndShowGUI() و بالتالي سيتم إستدعاء الدالة Main هنا قمنا بإنشاء كائن من الكلاس
  34. new Main();
  35. }
  36. });
  37. }
  38. // هنا نضع كود إنشاء النافذة و محتوياتها
  39. private void createAndShowGUI() {
  40. // هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
  41. backgroundPanel = new JPanel(null);
  42. backgroundImage = new JLabel(new ImageIcon(this.getClass().getResource("/images/world-map.png")));
  43. label = new JLabel("Enter URL", JLabel.CENTER);
  44. textField = new JTextField();
  45. buttonFind = new JButton("Get IP");
  46. labelResult = new JLabel("", JLabel.CENTER);
  47. // هنا قمنا بتحديد حجم و مكان كل شيء سيتم إضافته في النافذة
  48. backgroundPanel.setPreferredSize(new Dimension(600, 340));
  49. backgroundImage.setBounds(0, 0, 600, 340);
  50. label.setBounds(200, 75, 200, 30);
  51. textField.setBounds(200, 115, 200, 36);
  52. buttonFind.setBounds(200, 165, 200, 36);
  53. labelResult.setBounds(0, 225, 600, 30);
  54. // label هنا قمنا بتحديد خصائص العنوان
  55. label.setFont(new Font("Arial", Font.PLAIN, 20));
  56. label.setForeground(Color.WHITE);
  57. // textField هنا قمنا بتحديد خصائص مربع النص
  58. textField.setFont(new Font("Arial", Font.PLAIN, 18));
  59. textField.setForeground(Color.LIGHT_GRAY);
  60. textField.setBackground(new Color(10, 10, 10));
  61. textField.setCaretColor(Color.WHITE);
  62. textField.setFocusable(true);
  63. textField.setBorder(BorderFactory.createCompoundBorder(
  64. textField.getBorder(),
  65. BorderFactory.createEmptyBorder(5, 5, 5, 5)));
  66. // buttonFind هنا قمنا بتحديد خصائص الزر
  67. buttonFind.setFont(new Font("Arial", Font.BOLD, 16));
  68. buttonFind.setForeground(Color.LIGHT_GRAY);
  69. buttonFind.setBackground(Color.DARK_GRAY);
  70. buttonFind.setBorder(BorderFactory.createLineBorder(Color.GRAY, 2));
  71. buttonFind.setFocusable(false);
  72. // labelResult هنا قمنا بتحديد نوع و حجم خط النتيجة التي ستظهر مكان العنوان
  73. labelResult.setFont(new Font("Arial", Font.PLAIN, 18));
  74. // هنا قمنا بإضافة جميع الأشياء التي قمنا بإنشائها في حاوية النافذة
  75. backgroundPanel.add(label);
  76. backgroundPanel.add(textField);
  77. backgroundPanel.add(buttonFind);
  78. backgroundPanel.add(labelResult);
  79. backgroundPanel.add(labelResult);
  80. backgroundPanel.add(backgroundImage);
  81. // actionPerformed() سيتم تنفيذ الأوامر الموضوعة في الدالة buttonFind هنا قلنا أنه عند النقر على الزر
  82. buttonFind.addActionListener(this);
  83. // هنا قمنا بإضافة الحاوية التي تحتوي على كل الأشياء التي قنما بتعريفها في النافذة
  84. add(backgroundPanel);
  85. // هنا قمنا بتحديد بعض خصائص النافذة و جعلناها مرئية
  86. setTitle("IP Finder");
  87. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  88. setResizable(false);
  89. pack();
  90. setLocationRelativeTo(null);
  91. setVisible(true);
  92. }
  93. // actionPerformed() للدالة Override يجب أن نفعل ,ActionListener يطبق الإنترفيس Main بما أننا جعلنا الكلاس
  94. // Get IP لتحديد ما سيحدث عند النقر على الزر
  95. @Override
  96. public void actionPerformed(ActionEvent e) {
  97. // url سيتم تخزين النص الموجود في مربع النص في الكائن
  98. String url = textField.getText();
  99. // labelResult إذا لم يكن مربع النص فارغاً سيحاول البرنامج الإتصال بالنت و جلب عنوان الموقع المذكور و وضعه كنص للكائن
  100. if(!url.isEmpty())
  101. {
  102. try {
  103. InetAddress address = InetAddress.getByName(url);
  104. String ip = address.getHostAddress();
  105. labelResult.setText(ip);
  106. labelResult.setForeground(Color.GREEN);
  107. }
  108. catch (UnknownHostException ex) {
  109. labelResult.setText("Invalid URL or Network is Down");
  110. labelResult.setForeground(Color.RED);
  111. }
  112. }
  113. // إذا كان مربع النص فارغاً عند النقر على الزر, سيتم إظهار النص التالي و تلوينه بالأحمر
  114. else {
  115. labelResult.setText("Please enter a valid URL in the above field");
  116. labelResult.setForeground(Color.RED);
  117. }
  118. }
  119. }