Home Foros FOROS PARA AYUDAROS ENTRE VOSOTROS. EL PROFESOR AQUÍ NO RESPONDE Foro de Java Adapte este codigo de socket de cliente y servidor y me envia archivos pero

Adapte este codigo de socket de cliente y servidor y me envia archivos pero

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Autor
    Entradas
  • #16288

    Fabricio Ortiz
    Participante

    Quisiera que el servidor no me aceptara solo archivos que sean de extension .exe aqui les dejo todo mi codigo.

    //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 Recepcion De Archivos…»); }

     

     

    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(«Recibiendo Archivo «+nombreArchivo );

    // 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(«C:\\Descargas\\»+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(«Archivo Recibido «+nombreArchivo);

    } catch (IOException e) {System.out.println(«Recibir «+e.toString());}

    }

    }

     

    }

    #16289

    Fabricio Ortiz
    Participante

    fsd

    #16290

    Fabricio Ortiz
    Participante

    Aqui les dejo el cliente

    //ENVIO ARCHIVO ENTRE CLIENTE-SERVIDOR

    //Proceso del cliente

     

    package sockets3_cliente;

     

     

    public class Sockets3_cliente {

     

    public static void main(String[] args) {

    formu1 formu  = new formu1();formu.setVisible(true); }

     

    }

     

    package sockets3_cliente;

     

    import java.awt.HeadlessException;

    import java.io.*;

    import java.net.*;

    import javax.swing.*;

     

    public class EnviarArchivo {

    private String nombreArchivo = «»;

     

    public EnviarArchivo( String nombreArchivo ) {

    this.nombreArchivo = nombreArchivo;}

     

    public void enviarArchivo( ) {

    try {

    // Creamos la direccion IP de la maquina que recibira el archivo

    InetAddress direccion = InetAddress.getByName(«localhost»);

    try (// Creamos el Socket con la direccion y elpuerto de comunicacion

    Socket socket = new Socket(direccion, 5000 ) //IP y numero puerto

    ) {socket.setSoTimeout( 2000 );socket.setKeepAlive( true );

    // Creamos el archivo que vamos a enviar

    File archivo = new File( nombreArchivo );

    // Obtenemos el tamaño del archivo

    int tamañoArchivo = ( int )archivo.length();

    // Creamos el flujo de salida, este tipo de flujo nos permite

    // hacer la escritura de diferentes tipos de datos tales como

    // Strings, boolean, caracteres y la familia de enteros, etc.

    DataOutputStream dos = new DataOutputStream( socket.getOutputStream() );

    System.out.println( «Enviando Archivo: «+archivo.getName() );

    // Enviamos el nombre del archivo

    dos.writeUTF( archivo.getName() );

    // Enviamos el tamaño del archivo

    dos.writeInt( tamañoArchivo );

    // Creamos flujo de entrada para realizar la lectura del archivo en bytes

    FileInputStream fis = new FileInputStream( nombreArchivo );

    BufferedOutputStream bos;

    // Creamos el flujo de salida para enviar los datos del archivo en bytes

    try (BufferedInputStream bis = new BufferedInputStream( fis )) {

    // Creamos el flujo de salida para enviar los datos del archivo en bytes

    bos = new BufferedOutputStream( socket.getOutputStream()          );

    // Creamos un array de tipo byte con el tamaño del archivo

    byte[] buffer = new byte[ tamañoArchivo ];

    // Leemos el archivo y lo introducimos en el array de bytes

    bis.read( buffer );

    // Realizamos el envio de los bytes que conforman el archivo

    for( int i = 0; i < buffer.length; i++ ) {bos.write( buffer[ i ] ); }

    JOptionPane.showMessageDialog(null,»Archivo Enviado: «+archivo.getName() );

    // Cerramos socket y flujos

    } bos.close(); }

    }

    catch(HeadlessException | IOException e) {System.out.println(e.toString() );

    System.out.println(«Archvo enviado»); }  }  }

     

     

    package sockets3_cliente;

     

     

    import java.util.StringTokenizer;

     

    public class CorregirRuta {

    String ruta, separador, nuevoSeparador;

     

    public CorregirRuta(String laruta, String sep, String nuevoSep)

    {ruta=laruta;separador=sep;nuevoSeparador=nuevoSep;}

     

    public String obtenerRutaCorregidaWindows() {

    StringTokenizer tokens=new StringTokenizer(ruta, separador);

    //Para guardar la ruta corregida

    String rutaCorregida = new String();

    //Contar los tokens (en este caso las carpetas, contado tambien

    // el nombre del archivo seleccionado).

    int noTokens = tokens.countTokens();int i = 1;

    do {//Agregar el nuevo separador

    rutaCorregida += tokens.nextToken()+nuevoSeparador;i++;

    }while(i<noTokens);

    //Agregar a la ruta corregida el ultimo token, (nombre del archivo)

    rutaCorregida += tokens.nextToken();

    //Mostrar la ruta corregida en la consola

    System.out.println(rutaCorregida+»\n»+noTokens+ » tokens»);

    return rutaCorregida; } }

     

     

    Y un formulario con 2 botones que son busque archivos y enviar.

     

    package sockets3_cliente;

     

    /**

    *

    * @author Usuario

    */

     

    import javax.swing.JFileChooser;

    import javax.swing.JOptionPane;

     

    public class formu1 extends javax.swing.JFrame {

     

    JFileChooser dlg;

    Sockets3_cliente socke3=new Sockets3_cliente();

     

    public formu1() {

    initComponents();

    }

    /**

    * This method is called from within the constructor to initialize the form.

    * WARNING: Do NOT modify this code. The content of this method is always

    * regenerated by the Form Editor.

    */

    @SuppressWarnings(«unchecked»)

    // <editor-fold defaultstate=»collapsed» desc=»Generated Code»>

    private void initComponents() {

     

    jButton7 = new javax.swing.JButton();

    jButton9 = new javax.swing.JButton();

    jButton10 = new javax.swing.JButton();

    jLabel2 = new javax.swing.JLabel();

    jButton2 = new javax.swing.JButton();

     

    jButton7.setText(«Mensaje»);

    jButton7.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jButton7ActionPerformed(evt);

    }

    });

     

    jButton9.setText(«Cerrar»);

    jButton9.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jButton9ActionPerformed(evt);

    }

    });

     

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    setTitle(«CLIENTE»);

     

    jButton10.setText(«Busque archivo»);

    jButton10.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jButton10ActionPerformed(evt);

    }

    });

     

    jLabel2.setText(«Seleccione archivos menos que sean .exe y que no superen los 90 MB «);

     

    jButton2.setText(«Enviar»);

    jButton2.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jButton2ActionPerformed(evt);

    }

    });

     

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

    getContentPane().setLayout(layout);

    layout.setHorizontalGroup(

    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(layout.createSequentialGroup()

    .addGap(22, 22, 22)

    .addComponent(jButton10)

    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

    .addComponent(jButton2)

    .addGap(39, 39, 39))

    .addGroup(layout.createSequentialGroup()

    .addContainerGap()

    .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

    .addContainerGap())

    );

    layout.setVerticalGroup(

    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(layout.createSequentialGroup()

    .addGap(24, 24, 24)

    .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(18, 18, 18)

    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

    .addComponent(jButton10)

    .addComponent(jButton2))

    .addContainerGap(28, Short.MAX_VALUE))

    );

     

    pack();

    setLocationRelativeTo(null);

    }// </editor-fold>

     

    private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    }

     

    private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    }

     

    private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {

    dlg = new JFileChooser();

    int opcion = dlg.showOpenDialog(this);

    if(opcion==JFileChooser.APPROVE_OPTION)

    {String file = dlg.getSelectedFile().getPath();jLabel2.setText(file);}

    if(opcion==JFileChooser.CANCEL_OPTION)

    {

    JOptionPane.showMessageDialog(this, «Accion Cancelada Por El Usuario»);

    }

    // TODO add your handling code here:

    }

     

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

    CorregirRuta corregir = new CorregirRuta(jLabel2.getText(), «\\», «\\\\»);

    String ruta = corregir.obtenerRutaCorregidaWindows();

    EnviarArchivo ea = new EnviarArchivo(ruta);

    ea.enviarArchivo();

    }

     

    /**

    * @param args the command line arguments

    */

    public static void main(String args[]) {

    /* Set the Nimbus look and feel */

    //<editor-fold defaultstate=»collapsed» desc=» Look and feel setting code (optional) «>

    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

    * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

    */

    try {

    for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

    if («Nimbus».equals(info.getName())) {

    javax.swing.UIManager.setLookAndFeel(info.getClassName());

    break;

    }

    }

    } catch (ClassNotFoundException ex) {

    java.util.logging.Logger.getLogger(formu1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

    } catch (InstantiationException ex) {

    java.util.logging.Logger.getLogger(formu1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

    } catch (IllegalAccessException ex) {

    java.util.logging.Logger.getLogger(formu1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

    } catch (javax.swing.UnsupportedLookAndFeelException ex) {

    java.util.logging.Logger.getLogger(formu1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

    }

    //</editor-fold>

     

    /* Create and display the form */

    java.awt.EventQueue.invokeLater(new Runnable() {

    public void run() {

    new formu1().setVisible(true);

    }

    });

    }

     

    // Variables declaration – do not modify

    private javax.swing.JButton jButton10;

    private javax.swing.JButton jButton2;

    private javax.swing.JButton jButton7;

    private javax.swing.JButton jButton9;

    private javax.swing.JLabel jLabel2;

    // End of variables declaration

    }

     

     

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Debes estar registrado para responder a este debate.