برنامج كاشف عناوين المواقع و الأجهزة IP Finder
برنامج كاشف عناوين المواقع و الأجهزة IP Finder
في هذا الدرس ستتعلم طريقة إنشاء برنامج ( IP Finder ) و الذي يمكن إستخدامه لجلب عنوان أي شيء متصل بالنت سواء كان سيرفر, حاسوب, هاتف إلخ..
بناء البرنامج
في هذا المشروع قمنا بوضع ملف الجافا بداخل مجلد إسمه ip_finder.
و قمنا بوضع الصورة التي وضعناها كخلفية بداخل مجلد إسمه images كما في الصورة التالية.
كود البرنامج
- // snake_2d موجود بداخل المجلد Main.java هنا ذكرنا أن الملف
- package ip_finder;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.net.InetAddress;
- import java.net.UnknownHostException;
- import javax.swing.BorderFactory;
- import javax.swing.ImageIcon;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JPanel;
- import javax.swing.JTextField;
- import javax.swing.SwingUtilities;
- // و بالتالي أصبح إنشاء كائن منه يمثل إنشاء نافذة JFrame يرث من الكلاس Main هنا جعلنا الكلاس
- public class Main extends JFrame implements ActionListener {
- // هنا قمنا بتعريف الأشياء التي سيتم وضعها في النافذة
- JPanel backgroundPanel;
- JLabel label, labelResult, backgroundImage;
- JTextField textField;
- JButton buttonFind;
- // فقط createAndShowGUI() سيقوم الكونستركتور بإستدعاء الدالة Main عند إنشاء كائن من الكلاس
- public Main() {
- createAndShowGUI();
- }
- public static void main(String[] args) {
- SwingUtilities.invokeLater(new Runnable() {
- @Override
- public void run() {
- // التي ستنشئ النافذة createAndShowGUI() و بالتالي سيتم إستدعاء الدالة Main هنا قمنا بإنشاء كائن من الكلاس
- new Main();
- }
- });
- }
- // هنا نضع كود إنشاء النافذة و محتوياتها
- private void createAndShowGUI() {
- // هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
- backgroundPanel = new JPanel(null);
- backgroundImage = new JLabel(new ImageIcon(this.getClass().getResource("/images/world-map.png")));
- label = new JLabel("Enter URL", JLabel.CENTER);
- textField = new JTextField();
- buttonFind = new JButton("Get IP");
- labelResult = new JLabel("", JLabel.CENTER);
- // هنا قمنا بتحديد حجم و مكان كل شيء سيتم إضافته في النافذة
- backgroundPanel.setPreferredSize(new Dimension(600, 340));
- backgroundImage.setBounds(0, 0, 600, 340);
- label.setBounds(200, 75, 200, 30);
- textField.setBounds(200, 115, 200, 36);
- buttonFind.setBounds(200, 165, 200, 36);
- labelResult.setBounds(0, 225, 600, 30);
- // label هنا قمنا بتحديد خصائص العنوان
- label.setFont(new Font("Arial", Font.PLAIN, 20));
- label.setForeground(Color.WHITE);
- // textField هنا قمنا بتحديد خصائص مربع النص
- textField.setFont(new Font("Arial", Font.PLAIN, 18));
- textField.setForeground(Color.LIGHT_GRAY);
- textField.setBackground(new Color(10, 10, 10));
- textField.setCaretColor(Color.WHITE);
- textField.setFocusable(true);
- textField.setBorder(BorderFactory.createCompoundBorder(
- textField.getBorder(),
- BorderFactory.createEmptyBorder(5, 5, 5, 5)));
- // buttonFind هنا قمنا بتحديد خصائص الزر
- buttonFind.setFont(new Font("Arial", Font.BOLD, 16));
- buttonFind.setForeground(Color.LIGHT_GRAY);
- buttonFind.setBackground(Color.DARK_GRAY);
- buttonFind.setBorder(BorderFactory.createLineBorder(Color.GRAY, 2));
- buttonFind.setFocusable(false);
- // labelResult هنا قمنا بتحديد نوع و حجم خط النتيجة التي ستظهر مكان العنوان
- labelResult.setFont(new Font("Arial", Font.PLAIN, 18));
- // هنا قمنا بإضافة جميع الأشياء التي قمنا بإنشائها في حاوية النافذة
- backgroundPanel.add(label);
- backgroundPanel.add(textField);
- backgroundPanel.add(buttonFind);
- backgroundPanel.add(labelResult);
- backgroundPanel.add(labelResult);
- backgroundPanel.add(backgroundImage);
- // actionPerformed() سيتم تنفيذ الأوامر الموضوعة في الدالة buttonFind هنا قلنا أنه عند النقر على الزر
- buttonFind.addActionListener(this);
- // هنا قمنا بإضافة الحاوية التي تحتوي على كل الأشياء التي قنما بتعريفها في النافذة
- add(backgroundPanel);
- // هنا قمنا بتحديد بعض خصائص النافذة و جعلناها مرئية
- setTitle("IP Finder");
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setResizable(false);
- pack();
- setLocationRelativeTo(null);
- setVisible(true);
- }
- // actionPerformed() للدالة Override يجب أن نفعل ,ActionListener يطبق الإنترفيس Main بما أننا جعلنا الكلاس
- // Get IP لتحديد ما سيحدث عند النقر على الزر
- @Override
- public void actionPerformed(ActionEvent e) {
- // url سيتم تخزين النص الموجود في مربع النص في الكائن
- String url = textField.getText();
- // labelResult إذا لم يكن مربع النص فارغاً سيحاول البرنامج الإتصال بالنت و جلب عنوان الموقع المذكور و وضعه كنص للكائن
- if(!url.isEmpty())
- {
- try {
- InetAddress address = InetAddress.getByName(url);
- String ip = address.getHostAddress();
- labelResult.setText(ip);
- labelResult.setForeground(Color.GREEN);
- }
- catch (UnknownHostException ex) {
- labelResult.setText("Invalid URL or Network is Down");
- labelResult.setForeground(Color.RED);
- }
- }
- // إذا كان مربع النص فارغاً عند النقر على الزر, سيتم إظهار النص التالي و تلوينه بالأحمر
- else {
- labelResult.setText("Please enter a valid URL in the above field");
- labelResult.setForeground(Color.RED);
- }
- }
- }