Autor Tema: Socket En Java JFileChooser rechazar tipo de archivo en servidor admitir resto  (Leído 400 veces)

fabricioom

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Hola comunidad me presento soy Fabricio Ortiz soy nuevo en la pagina y espero ayudar y aprender mucho de ustedes y pueden contar conmigo un amigo mas para la comunidad:) 8) Quisiera para comenzar que me ayuden con esto. ¿Como hago que el servidor rechaze solo los archivos .exe? El servidor acepta cualquier archivo y  trabajo con socket entre un cliente y servidor ya hice lo que podía pero no sé como implementar esa condición. He visto que con JFileChooser hago eso pero no sé cómo se implementaría y este método o cambio sólo sería en el servidor.

Código: [Seleccionar]
/ENVIO ARCHIVO ENTRE CLIENTE-SERVIDOR
    //Proceso del servidor
    package sockets3_servidor;
   
    import java.io.*;
    import java.net.*;
    import javax.swing.*;
   
   
    public class Sockets3_servidor  {
       
    static Socket cliente=null;
    static ServerSocket servidor = null;
    static String nombreArchivo;
   
   
    public static void main(String[] args) throws IOException {
    JOptionPane.showMessageDialog(null, "SERVICIO INICIADO","Mensaje",JOptionPane.INFORMATION_MESSAGE);
    Sockets3_servidor p = new Sockets3_servidor();
    servidor = new ServerSocket(5000);
    p.iniciarservidor(servidor);
    }
   
   
    public Sockets3_servidor() throws IOException {
    // Creamos socket servidor escuchando en el mismo puerto donde se comunica el cliente
       // en este caso el puerto es el 4400
       System.out.println("ESPERANDO ARCHIVOS COMPATIBLES"); }
   
   
    public  void iniciarservidor(ServerSocket servidor) {   
        while(true) {
            try {
            // Creamos el socket que atendera el servidor
            cliente = servidor.accept();
            // Creamos flujo de entrada para leer los datos que envia el cliente
            DataInputStream dis = new DataInputStream(cliente.getInputStream());
            // Obtenemos el nombre del archivo
            nombreArchivo = dis.readUTF();
            // Obtenemos el tamaño del archivo
            int tam = dis.readInt();
            System.out.println("VERIFICANDO TIPO DE ARCHIVO ");
            // Creamos flujo de salida, este flujo nos sirve para
            // indicar donde guardaremos el archivo       
            //para ello en C: cree la carpeta ARCHIVO   
            FileOutputStream fos = new FileOutputStream(nombreArchivo);
            try (BufferedOutputStream out = new BufferedOutputStream(fos);
            BufferedInputStream in = new BufferedInputStream(cliente.getInputStream())) {
               
               
            // Creamos el array de bytes para leer los datos del archivo
             byte[] buffer = new byte[tam];
             // Obtenemos el archivo mediante la lectura de bytes enviados
             for(int i=0;i<buffer.length;i++) {buffer[i] = (byte)in.read();}
           //Escribimos el archivo
             out.write(buffer);
             //Cerramos los flujos
            out.flush();            }
             cliente.close();
             System.out.println("RECIBIENDO ARCHIVO: "+nombreArchivo);
             
            } catch (IOException e) {System.out.println(""+e.toString());}
            } 
       
       }
   
    }
« Última modificación: 18 de Abril 2021, 20:23 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 724
    • Ver Perfil
Re: Socket En Java
« Respuesta #1 en: 05 de Marzo 2021, 00:01 »
Hola y bienvenido.
Ya que planteas una duda, movemos el tema a la sección adecuada.

Si quieres rechazar los .exe, supongo que bastará con comprobar si el nombre del archivo finaliza con ese texto.
Algo parecido a esto:
Citar
while(true) {
            try {
            // Creamos el socket que atendera el servidor
            cliente = servidor.accept();
            // Creamos flujo de entrada para leer los datos que envia el cliente
            DataInputStream dis = new DataInputStream(cliente.getInputStream());
            // Obtenemos el nombre del archivo
            nombreArchivo = dis.readUTF();
            // Obtenemos el tamaño del archivo
            int tam = dis.readInt();
            System.out.println("VERIFICANDO TIPO DE ARCHIVO ");
            if (nombreArchivo.endsWith(".exe"))
                System.out.println("Archivo rechazado: " + nombreArchivo);
            else {

                // Creamos flujo de salida, este flujo nos sirve para
                // indicar donde guardaremos el archivo       
                //para ello en C: cree la carpeta ARCHIVO   
                FileOutputStream fos = new FileOutputStream(nombreArchivo);
                try (BufferedOutputStream out = new BufferedOutputStream(fos);
                BufferedInputStream in = new BufferedInputStream(cliente.getInputStream())) {
               etc....
               etc....
               etc....
            }
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

fabricioom

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Re: Socket En Java
« Respuesta #2 en: 05 de Marzo 2021, 02:25 »
Kabuto muchas gracias crack me ayudastes bastante era mas sencillo de lo que crei.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".