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
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)
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();
}
}
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)
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:
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
/**
* 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();
}
}
(http://4.bp.blogspot.com/-NGltnBF_x_k/Xode4LcCwaI/AAAAAAAAFZQ/tozQv5CsINM3B98xafj0dTyBU-cvOTJoQCK4BGAYYCw/s400/ipvalida.png)