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:)
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.
/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());}
}
}
}