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 Respuesta a: Adapte este codigo de socket de cliente y servidor y me envia archivos pero

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

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 Respuesta a: Adapte este codigo de socket de cliente y servidor y me envia archivos pero

#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

}