elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ... 140
111  Programación / Java / Re: Temas sobre sockets en: 12 Marzo 2021, 13:24 pm
hola comunidad programadora soy nuevo en este sitio ,mi nombre es Jordy mucho gusto, estoy aquí para aprender mas a cerca sobre el lenguaje java tengo un problema con un ejercicio y ya le e dado mil vueltas y no logro realizarlo, este ejercicio me pide que tengo q conectarme a un servidor en donde el cliente hace una petición y solo el servidor responderá con números octales (0,1,2,3,4,5,6,7),pero la conexión debe de ser solo comunicación UDP como puedo realizar eso en el siguiente código? necesito ayuda  :'(
Código:
 /código del servidor 

/*COMUNICACION UDP (protocolo sin conexión/IP) CLIENTE-SERVIDOR CON HILOS
La conexión UDP no es orientada a conexión, es decir, el servidor en principio
no sabe de donde viene el mensaje, aunque lo puede saber mirando el datagrama que le llega.
En otras palabras y comparando con la conexión TCP, UDP no necesita saber quien se conecta a él.
En UDP se envían datagramas a modo de mensajes.*/


package sockets4_servidor;

import java.io.*;
import java.net.*;

public class Sockets4_servidor {

static formu1 formu = new formu1();
static Sockets4_servidor meto = new Sockets4_servidor();
int PUERTO = 5000; //Puerto servidor  
String mensa1;
byte[] buffer = new byte[1024]; //buffer donde se almacenara los mensajes
DatagramSocket socketUDP;
DatagramPacket respuesta;
InetAddress direccion;
int puertoCliente;

public static void main(String[] args) {
formu.setVisible(true);meto.conexion();meto.ejecutarconexion();}


public void ejecutarconexion() {
Thread hilo = new Thread(new Runnable() {
@Override
@SuppressWarnings("empty-statement")
 public void run() {
 while (true) {  
  try {mensaje();}
  finally {;} } } } );
 hilo.start();}

public void conexion() {
try {  
formu1.jTextArea1.append("Esperando conexión entrante en el puerto: " + PUERTO+ "\n");
direccion = InetAddress.getLocalHost();
formu1.jTextArea1.append("Servidor IP: " + direccion + "\n");}      
catch (IOException e) {System.err.println("Error "+e);} }

public void mensaje() {
try {
 //Creacion del socket
 socketUDP = new DatagramSocket(PUERTO);
 //Preparo la respuesta
 DatagramPacket peticion = new DatagramPacket(buffer, buffer.length);
//Recibo el datagrama
 socketUDP.receive(peticion);
 //Convierto lo recibido y mostrar el mensaje
 mensa1 =new String(peticion.getData());
 formu1.jTextArea1.append(mensa1+"\n");
 //Obtengo el puerto y la direccion de origen
 //Sino se quiere responder, no es necesario
 puertoCliente = peticion.getPort();
 direccion = peticion.getAddress();
 mensa1="SERVIDOR: Hola Cliente";
 buffer = mensa1.getBytes();
 //creo el datagrama
 respuesta = new DatagramPacket(buffer, buffer.length, direccion, puertoCliente);
 //Envio la información
 socketUDP.send(respuesta); }      
catch (IOException e) {System.err.println("Error "+e);} }
 
}/code]

Usa codigo GeSHi sique se puede, con UDP

Pasa el codigo de formu1 que es necesario para ver que mas se asi, sino toca hacerte el JFrame completo.

Aqui hicimos un ejemplo parecido pero sin UI

https://foro.elhacker.net/ejercicios/como_enviar_un_arraylist_del_cliente_al_servidor_usando_udp-t496078.0.html;msg2194233#msg2194233
112  Programación / Java / Re: java.lang.NoClassDefFoundError Ayuda! en: 9 Marzo 2021, 10:06 am
Hola,

Esa explicacion no ayuda mucho, pasa mas info, eso a veces se refiere que la JVM no esta cargando alguna clases en especifico, y por razones distintas.
113  Media / Multimedia / Re: descargar videos de youtube en: 7 Marzo 2021, 15:18 pm
Y sirven para descargas de varios gigas y reiniciarlas si por algún motivo se interrumpen???...

Saludos.

 :rolleyes: :o :rolleyes:

Con JDownloader 2 puedes hacer eso dog, tranquilo, en Venezuela lo hize demas, claro esta que si, porque incluso tenia un internet de menos de medio mega...
114  Media / Multimedia / Re: descargar videos de youtube en: 6 Marzo 2021, 22:29 pm
yo casi siempre usaba Jdownloader, pero hay tantos, que seguro serviran muy bien...
115  Programación / Java / Re: Error con arraylist en: 5 Marzo 2021, 23:38 pm
hola,

Seguro que varias veces no se te comento lo del Geshi para ver el codigo mejor?

y pasa el source completo.

e igual creo que el error esta en tirarCarta, pero el index que le pasas al ArrayList no esta.
116  Programación / Java / Re: Mejorar Captura Firma Manuscrita en: 23 Febrero 2021, 09:31 am
Ok, Gracias a los dos ( rub'n, K-YreX ).Lo he entendido perfectamente, como parece interesante el poder seguir posibles Errores voy a intentar incorporarlo en el proyecto. También es una forma de ir aprendiendo más.

Gracias,

Ya os contaré.



Asi es, si quieres una tarea buena, aprende con lombok, no te sera muy complicado, solo que por medio de anotaciones tienes esa utilidad tambien,

Entonces permite crear codigo en runtime, nos ahorra escribir codigo, incluso dicha dependencia ya viene por defecto en otro IDE como IntelliJ IDEA siendo la configuracion muy corta y facil.


prueba a usar la anotacion @Data de lombok es cool, te crea, getters, setter, toString() hashCode() e Equals() en runtime... y el codigo te quedaria algo asi

Código
  1. @Data
  2. public class Hola {
  3.  
  4.    private String hola = "Hi!";
  5.  
  6. }

Donde aparentemente no pasa nada, pero si que hay magia detras... cuando vas a otra clase puedes hacer

Código
  1. new Hola().setHola("");

o

Código
  1. new Hola().getHola();
117  Programación / Java / Re: Mejorar Captura Firma Manuscrita en: 23 Febrero 2021, 07:15 am
K-YreX asi es.

Juan Pelaez no importa que preguntes eso, Mmm creo que debes permitir el uso de lombok en eclipse.

O comentar la linea 20,  94 y 103 en la clase JPanelForSign 
118  Programación / Java / Re: Mejorar Captura Firma Manuscrita en: 20 Febrero 2021, 05:19 am
Algo se avanzo pero el sueño no me deja... guiate abajo  :P

  • Código tomado del original y refactorizado, asi que creditos a esa gente tan aburrida  :xD
  • Añadido un JFileChooser para guardar la imagen resultante
  • Refactorización del JPanel para que se escriba dentro de el, y no en todo el JFrame como el codigo original
  • Sin test unitarios

FIXME

  • Refactorizar para que al redimenzionar el JFrame el JPanel de firmar, lo haga también
  • Quizas redimencionando el JPanel de firma bastaria, pero el BufferedImage abria que retocarlo eso creo.

MainJFrame

Código
  1. package com.signwithmouse;
  2.  
  3. import lombok.extern.slf4j.Slf4j;
  4.  
  5. import javax.swing.*;
  6. import javax.swing.border.TitledBorder;
  7. import java.awt.*;
  8.  
  9. /**
  10.  * https://foro.elhacker.net/java/problemas_con_app_simple_para_dibujar_firma_y_guardarla_como_imagen-t427969.0.html
  11.  *
  12.  * Nombre de clase = recogeFirma
  13.  * Descripcion = Clase encargada de capturar la firma que se dibuja en pantalla
  14.  *
  15.  * @version 1.0
  16.  * @author rubn
  17.  * @author google
  18.  * @author mas personas
  19.  */
  20. @Slf4j
  21. public class MainJFrame extends JFrame {
  22.  
  23.    private static final String TITLE = "App Firma";
  24.    private JButton jButtonBorrar = new JButton("Borrar");
  25.    private JButton jButtonGuardar = new JButton("Guardar");
  26.    private JLabel jLabelIL = new JLabel("Introduzca su firma");
  27.  
  28.    private final JPanel mainJPanel = new JPanel();
  29.    //Algo de Magia
  30.    private JPanelForSign jPanelForSign = new JPanelForSign();
  31.  
  32.    public MainJFrame() {
  33.  
  34.        this.configureJFrame();
  35.        this.configureJPanels();
  36.        this.initBehaviour();
  37.  
  38.    }
  39.  
  40.    private void configureJFrame() {
  41.        super.setResizable(false);
  42.        super.setPreferredSize(new Dimension(400,350));
  43.        super.add(mainJPanel);
  44.        super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  45.        super.pack();
  46.        super.setLocationRelativeTo(null);
  47.        super.setVisible(true);
  48.    }
  49.  
  50.    private void configureJPanels() {
  51.  
  52.        final TitledBorder border = new TitledBorder(TITLE);
  53.        border.setTitleJustification(TitledBorder.CENTER);
  54.        border.setTitlePosition(TitledBorder.TOP);
  55.  
  56.        this.mainJPanel.setBorder(border);
  57.        this.mainJPanel.setLayout(new BorderLayout());
  58.  
  59.        final JPanel panelFooter = new JPanel();
  60.        panelFooter.setLayout(new FlowLayout());
  61.        panelFooter.add(new JLabel());
  62.        panelFooter.add(jLabelIL);
  63.        panelFooter.add(jButtonBorrar);
  64.        panelFooter.add(jButtonGuardar);
  65.        mainJPanel.add(jPanelForSign);
  66.        mainJPanel.add(panelFooter,BorderLayout.SOUTH);
  67.        mainJPanel.setPreferredSize(new Dimension(450, 250));
  68.    }
  69.  
  70.    private void initBehaviour() {
  71.        jButtonBorrar.addActionListener(e -> {
  72.            //Blanquear la imagen de la firma
  73.            jPanelForSign.clearSignZone();
  74.        });
  75.        jButtonGuardar.addActionListener(e -> {
  76.            jPanelForSign.guardarFirma();
  77.        });
  78.    }
  79.  
  80.    public static void main(String... blabla) {
  81.        final String osType = System.getProperty("os.name");
  82.        try {
  83.            if(osType.contains("Win")) {
  84.                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
  85.            }else if(osType.contains("Linux")) {
  86.                UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
  87.            }
  88.        }catch(Exception ex) {}
  89.  
  90.        new Thread(MainJFrame::new).start();
  91.    }
  92.  
  93. }

JPanelForSign

Código
  1. package com.signwithmouse;
  2.  
  3. import com.signwithmouse.util.GetFileChooser;
  4. import lombok.extern.slf4j.Slf4j;
  5.  
  6. import javax.imageio.ImageIO;
  7. import javax.swing.*;
  8. import java.awt.*;
  9. import java.awt.event.MouseAdapter;
  10. import java.awt.event.MouseEvent;
  11. import java.awt.event.MouseMotionAdapter;
  12. import java.awt.image.BufferedImage;
  13. import java.io.IOException;
  14. import java.nio.file.Path;
  15. import java.util.concurrent.atomic.AtomicInteger;
  16.  
  17. /**
  18.  * JPanel donde se firmara
  19.  */
  20. @Slf4j
  21. public class JPanelForSign extends JPanel {
  22.  
  23.    private static final int WIDTH = 400;
  24.  
  25.    private BufferedImage bufferedImage = new BufferedImage(WIDTH, WIDTH, BufferedImage.TYPE_INT_ARGB);
  26.    private final AtomicInteger uX = new AtomicInteger();
  27.    private final AtomicInteger uY = new AtomicInteger();
  28.  
  29.    public JPanelForSign() {
  30.        super.setBackground(Color.WHITE);
  31.        super.requestFocus();
  32.        super.setBorder(BorderFactory.createEtchedBorder());
  33.        this.addMouseListener(new MouseAdapter() {
  34.            @Override
  35.            public void mousePressed(MouseEvent e) {
  36.                uX.set(e.getX());
  37.                uY.set(e.getY());
  38.                repaint();
  39.            }
  40.        });
  41.  
  42.        this.addMouseMotionListener(new MouseMotionAdapter() {
  43.            @Override
  44.            public void mouseDragged(MouseEvent e) {
  45.                final int x = e.getX();
  46.                final int y = e.getY();
  47.                final Graphics2D g2 = (Graphics2D) bufferedImage.getGraphics();
  48.                g2.setBackground(Color.WHITE);
  49.                g2.setColor(Color.BLACK);
  50.                g2.drawLine(uX.get(), uY.get(), x, y);
  51.                uX.set(x);
  52.                uY.set(y);
  53.                g2.dispose();
  54.            }
  55.        });
  56.  
  57.    }
  58.  
  59.    public void clearSignZone() {
  60.        this.createEmptyImage();
  61.        super.repaint();
  62.    }
  63.  
  64.    private void createEmptyImage() {
  65.        bufferedImage = new BufferedImage(super.getWidth(), super.getHeight(), BufferedImage.TYPE_INT_ARGB);
  66.        final Graphics2D g2d = (Graphics2D) bufferedImage.getGraphics();
  67.        g2d.setColor(Color.BLACK);
  68.    }
  69.  
  70.    @Override
  71.    public void paint(Graphics g) {
  72.        super.paint(g);
  73.        final Graphics2D graphics2D = (Graphics2D) g.create();
  74.        graphics2D.drawImage(bufferedImage, 0, 0, null);
  75.        super.repaint();
  76.    }
  77.  
  78.    /**
  79.      * Método que guarda la imagen generada
  80.      */
  81.    public void guardarFirma() {
  82.        final JFileChooser jFileChooser = GetFileChooser.getFileChooser(JFileChooser.DIRECTORIES_ONLY);
  83.        if (jFileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
  84.            Path path1 = jFileChooser.getSelectedFile().toPath();
  85.            final String fileN = path1.getFileName().toString();
  86.  
  87.            if(!fileN.endsWith(".png")) {//En caso de que no termine en .png se lo concatenamos
  88.                try {
  89.                    String fileName = path1.getFileName().toString().concat(".png");
  90.                    path1 = path1.resolveSibling(fileName);
  91.                    ImageIO.write(bufferedImage, "png", path1.toFile());
  92.                    JOptionPane.showMessageDialog(null, "Imagen creada correctamente!");
  93.                } catch (IOException e) {
  94.                    log.warn(e.getMessage());
  95.                    JOptionPane.showMessageDialog(null, "Error al guardar!");
  96.                }
  97.            } else {
  98.                try {
  99.                    final Path path2 = jFileChooser.getSelectedFile().toPath();
  100.                    ImageIO.write(bufferedImage, "png", path2.toFile());
  101.                    JOptionPane.showMessageDialog(null, "Imagen creada correctamente!");
  102.                } catch (IOException e) {
  103.                    log.warn(e.getMessage());
  104.                    JOptionPane.showMessageDialog(null, "Error al guardar!");
  105.                }
  106.            }
  107.        }
  108.    }
  109. }

Para guardar




Borrar la firma



119  Programación / Java / Re: Mejorar Captura Firma Manuscrita en: 19 Febrero 2021, 11:22 am
Suena interesante, pero de por si, no uses Applet eso esta deprecated, creo que extendiendo de un JPanel la historia seria mejor, vere que puedo hacer.
120  Comunicaciones / Redes / Re: Desbloqueo Router Arris TG2482A en: 18 Febrero 2021, 17:27 pm
Hola, al hacer ese proceso como obtengo la semilla?
Tengo la contraseñas de octubre y noviembre, pero no he podido obtener la semilla

Doc que quieres hacer? este post es sobre tener acceso a la vista "Advanced" del modem.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ... 140
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines