Cita de: rub'n en 21 Marzo 2020, 23:38 PM
La linea 62 contiene la magia solo para ipv4 , 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 . 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