Obtener IP con hostname

Iniciado por GSecurity, 21 Marzo 2020, 21:38 PM

0 Miembros y 1 Visitante están viendo este tema.

GSecurity

Hola Gente,

Estoy desarrollando un proyecto de sockets para lo cual necesito validar la IP de una pc a traves del hostname el cual lo ingresare en un textfield. 

Gracias

rub'n

#1
Cita de: GSecurity en 21 Marzo 2020, 21:38 PM
Hola Gente,

Estoy desarrollando un proyecto de sockets para lo cual necesito validar la IP de una pc a traves del hostname el cual lo ingresare en un textfield.  

Gracias

La linea 62 contiene la magia solo para ipv4  :xD , este ejemplo te sirve para el anterior, y veas como se puede crear un JFrame.(50mil maneras diferentes las hay)

Código (java) [Seleccionar]

package foro;

import javax.swing.*;
import java.awt.*;
import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.util.function.Predicate;

/**
* https://foro.elhacker.net/java/obtener_ip_con_hostname-t503433.0.html
* @autor rubn
*/
public class ValidarIp extends JFrame {

   private final JLabel jLabelTitulo = new JLabel("Introduce un direccion ip");
   private final JTextField jTextField = new JTextField();
   private final JLabel jLabel = new JLabel("Resultado: ");
   private static final String ESPACIOS = "\\s+";
   private final JPanel mainJPanel = new JPanel();

   public ValidarIp() {
       super("Validar Ip");

       configureLayouts();

       configureJFrame();
   }

   private void configureJFrame() {
       add(mainJPanel);
       setResizable(Boolean.FALSE);
       setPreferredSize(new Dimension(366, 150));
       pack();
       setLocationRelativeTo(null);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setVisible(true);
   }

   private void configureLayouts() {
       mainJPanel.setLayout(new BoxLayout(mainJPanel, BoxLayout.Y_AXIS));
       mainJPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
       mainJPanel.add(jLabelTitulo,BorderLayout.NORTH);
       mainJPanel.add(Box.createVerticalStrut(20));
       mainJPanel.add(jTextField,BorderLayout.CENTER);
       mainJPanel.add(Box.createVerticalStrut(20));
       mainJPanel.add(jLabel,BorderLayout.SOUTH);

       listenerJTextField();
   }


   /**
    * Listener del JTextField
    */
   private void listenerJTextField() {
       jTextField.addActionListener(e -> {
           final String ip = jTextField.getText().replaceAll(ESPACIOS,"");

           final Predicate<String> predicate = p -> {
               try {

                   return Inet4Address.getByName(ip).getHostAddress().equals(ip);

               } catch (UnknownHostException ex) {
                   return Boolean.FALSE;
               }
           };

           if (predicate.test(ip)) {

               JOptionPane.showMessageDialog(null, "Ip valida");

           } else {
               JOptionPane.showMessageDialog(null, "Ip invalida");
           }
       });
   }

   public static void main(String ...blabla) {
       new Thread(ValidarIp::new).start();
   }
}


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

GSecurity

Cita de: rub'n en 21 Marzo 2020, 23:38 PM
La linea 62 contiene la magia solo para ipv4  :xD , este ejemplo te sirve para el anterior, y veas como se puede crear un JFrame.(50mil maneras diferentes las hay)

Código (java) [Seleccionar]

package foro;

import javax.swing.*;
import java.awt.*;
import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.util.function.Predicate;

/**
* https://foro.elhacker.net/java/obtener_ip_con_hostname-t503433.0.html
* @autor rubn
*/
public class ValidarIp extends JFrame {

   private final JLabel jLabelTitulo = new JLabel("Introduce un direccion ip");
   private final JTextField jTextField = new JTextField();
   private final JLabel jLabel = new JLabel("Resultado: ");
   private static final String ESPACIOS = "\\s+";
   private final JPanel mainJPanel = new JPanel();

   public ValidarIp() {
       super("Validar Ip");

       configureLayouts();

       configureJFrame();
   }

   private void configureJFrame() {
       add(mainJPanel);
       setResizable(Boolean.FALSE);
       setPreferredSize(new Dimension(366, 150));
       pack();
       setLocationRelativeTo(null);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setVisible(true);
   }

   private void configureLayouts() {
       mainJPanel.setLayout(new BoxLayout(mainJPanel, BoxLayout.Y_AXIS));
       mainJPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
       mainJPanel.add(jLabelTitulo,BorderLayout.NORTH);
       mainJPanel.add(Box.createVerticalStrut(20));
       mainJPanel.add(jTextField,BorderLayout.CENTER);
       mainJPanel.add(Box.createVerticalStrut(20));
       mainJPanel.add(jLabel,BorderLayout.SOUTH);

       listenerJTextField();
   }


   /**
    * Listener del JTextField
    */
   private void listenerJTextField() {
       jTextField.addActionListener(e -> {
           final String ip = jTextField.getText().replaceAll(ESPACIOS,"");

           final Predicate<String> predicate = p -> {
               try {

                   return Inet4Address.getByName(ip).getHostAddress().equals(ip);

               } catch (UnknownHostException ex) {
                   return Boolean.FALSE;
               }
           };

           if (predicate.test(ip)) {

               JOptionPane.showMessageDialog(null, "Ip valida");

           } else {
               JOptionPane.showMessageDialog(null, "Ip invalida");
           }
       });
   }

   public static void main(String ...blabla) {
       new Thread(ValidarIp::new).start();
   }
}


Hasta ahora no llego al nivel para utilizar Predicates  :xD . Gracias por tu ayuda amigo, sin embargo lo que en realidad necesito es que desde una caja de texto se ingrese el Hostname y con un boton "check" se obtena la ip de este hostname.

Gracias de ante mano  :laugh:

rub'n

#3
Cita de: GSecurity en  3 Abril 2020, 08:45 AM
Hasta ahora no llego al nivel para utilizar Predicates  :xD . Gracias por tu ayuda amigo, sin embargo lo que en realidad necesito es que desde una caja de texto se ingrese el Hostname y con un boton "check" se obtena la ip de este hostname.

Gracias de ante mano  :laugh:


Hasta un bebe puede usar un Predicate no tiene nada que ver.  

Son nuevas tareas extra curriculares, debes añadir un JButton al código



Código (java) [Seleccionar]

/**
* https://foro.elhacker.net/java/obtener_ip_con_hostname-t503433.0.html
* @autor rubn
*/
public class ValidarIp extends JFrame {

   private final JLabel jLabelTitulo = new JLabel("Introduce un direccion ip");
   private final JTextField jTextField = new JTextField();
   private final JButton btnCheck = new JButton("Chekiar IP");
   private final JLabel jLabelIpResult = new JLabel("Ip: ");
   private static final String ESPACIOS = "\\s+";
   private final JPanel mainJPanel = new JPanel();

   public ValidarIp() {
       super("Validar Ip");

       configureLayouts();

       configureJFrame();
   }

   private void configureJFrame() {
       add(mainJPanel);
       setResizable(Boolean.FALSE);
       setPreferredSize(new Dimension(366, 150));
       pack();
       setLocationRelativeTo(null);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       getRootPane().setDefaultButton(btnCheck);
       btnCheck.setBorderPainted(false);
       btnCheck.setFocusPainted(false);
       btnCheck.requestFocus();
       setVisible(true);
   }

   private void configureLayouts() {
       mainJPanel.setLayout(new BoxLayout(mainJPanel, BoxLayout.Y_AXIS));
       mainJPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
       final JPanel jPanelLabel = new JPanel(new FlowLayout(0));
       jPanelLabel.add(jLabelTitulo);
       mainJPanel.add(jPanelLabel);
       mainJPanel.add(Box.createVerticalStrut(10));
       mainJPanel.add(jTextField,BorderLayout.CENTER);
       mainJPanel.add(Box.createVerticalStrut(10));

       //row boton y JLabel
       final JPanel row = new JPanel(new FlowLayout(0));
       row.add(btnCheck);
       row.add(row.add(Box.createHorizontalStrut(20)));
       row.add(jLabelIpResult);
       mainJPanel.add(row);

       checkiarIp();
   }


   /**
    * Listener del JButton
    */
   private void checkiarIp() {
       btnCheck.addActionListener(e -> {
           final String ip = jTextField.getText().replaceAll(ESPACIOS,"");

           final Predicate<String> predicate = p -> {
               try {

                   return Inet4Address.getByName(ip).getHostAddress().equals(ip);

               } catch (UnknownHostException ex) {
                   return Boolean.FALSE;
               }
           };

           if (predicate.test(ip)) {
               JOptionPane.showMessageDialog(null, "Ip valida");
               jLabelIpResult.setText("");
               jLabelIpResult.setText("Ip: " + ip);
           } else {
               JOptionPane.showMessageDialog(null, "Ip invalida");
           }
       });
   }

   public static void main(String ...blabla) {
       new Thread(ValidarIp::new).start();
   }
}




rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen