Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: fabricioom en 04 de Marzo 2021, 21:13

Título: Socket En Java JFileChooser rechazar tipo de archivo en servidor admitir resto
Publicado por: fabricioom en 04 de Marzo 2021, 21:13
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());}
            } 
       
       }
   
    }
Título: Re: Socket En Java
Publicado por: Kabuto 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....
            }
Título: Re: Socket En Java
Publicado por: fabricioom en 05 de Marzo 2021, 02:25
Kabuto muchas gracias crack me ayudastes bastante era mas sencillo de lo que crei.