Hola Unxky, ahora te entendi y te paso la clase servidor y cliente, tene en cuenta que para esto si o si vas a tener que pasar el nombre del archivo y el path
El codigo del cliente.
Código PHP:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
public class Cliente {
private String ip = "127.0.0.1";
private int puerto = 16000;
// private String nomArchivo = "C:/Resultados.txt";
public Cliente (String nomArchivo) {
Socket socket = null;
FileInputStream in = null;
FileOutputStream pt = null;
// creo esta variable para poder mandar objetos basicos de java (como ser un String)
ObjectOutputStream ous = null;
try {
socket = new Socket (ip, puerto);
pt = (FileOutputStream) socket.getOutputStream ();//
in = new FileInputStream (new File (nomArchivo));
// le seteo el outputStream del socket
ous = new ObjectOutputStream (socket.getOutputStream ());
}//Fin del Try ***************
catch (Exception e) {
e.printStackTrace ();
System.out.println ("No se pudo crear la conexión\n" + e);
}//Fin del Catch *********
try {
socket.sendUrgentData (100);
// envio el nombre del archivo. Le concateno al final 'ext' para verificar que se esta pasando el archivo(sino le agrego esto el
// nombre de origen y destino son el mismo), vos lo tenes que sacar
ous.writeUTF (nomArchivo + "ext");
// envio los datos de forma urgente.
ous.flush ();
// ahora se continua con el envio del archivo.
byte[] buf = new byte[1024];
int len;
while ((len = in.read (buf)) > 0) {
pt.write (buf, 0, len);
}//Fin del while
pt.close ();
in.close ();
socket.close ();
}///********** fin del Try
catch (Exception e) {
e.printStackTrace ();
System.out.println ("Error al enviar mensaje\n" + e);
}//***Fin del Catch
}//Fin del Cliente
//***********************************************************
public static void main (String args[]) {
// suponemos que el nombre del archivo te lo pasa como un parametro a la hora de ejecutar el programa java
// para ejecutar escribimos: java <paquetesDondeEstaLaClase>.nomreClase <pathDeLaImagen>
// por ejemplo: <paquetesDondeEstaLaClase> = test.programa
// <pathDeLaImagen> = C:/Archivo.jpg
// si lo hacemos asi en args[0] = <pathDeLaImagen>
new Cliente (args[0]);
}///Fin del void Main
}//************************ Fin del Clase Cliente
Codigo del servidor
Código PHP:
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
//**************************************
public class Servidor implements Runnable {
ServerSocket server;
static String NombreDelArchivo = new String ();
static String mens = new String ("");
public Servidor () {
try {
server = new ServerSocket (16000);
System.out.println ("Servidor corriendo...");
}//Fin del Try
catch (Exception e) {
System.out.println ("Error al correr el servidor\n" + e);
System.exit (1);
}//fin del Catch
}//*** Fin del Servfidor
//*********************************************
public void run () {
Socket client = null;
File Ruta;
// genero la variable para leer objetos serializables de java
ObjectInputStream ois;
while (true) {
if (server == null)
return;
try {
client = server.accept ();
System.out.println ("Conexion recibida de " + client.getInetAddress ());
System.out.println ("Llegó un cliente!");
}//Fin del Try
catch (java.io.IOException e) {
e.printStackTrace ();
System.err.println ("No se pudo establecer conexión " + e.getMessage ());
}//Fin del catch
//***********************************************
try {
System.out.println ("Se esta Recibiendo un Archivo...");
// Ruta = new File ("C:");
// Aqui es donde debo de darle el Nombre a la Variable
// NombreDelArchivo en por default yo le doy uno pero debe ser
// el nombre que me esta llegando del cliente
// NombreDelArchivo = "Resultado.txt";
//
assert client != null;
InputStream in = client.getInputStream ();
// le asigno el inputStrem
ois = new ObjectInputStream (client.getInputStream ());
// leo el path del arhivo junto al nombre (ahora debes usar la funcion split que te pase con anterioridad)
NombreDelArchivo = ois.readUTF ();
System.out.println ("path del archivo: " + NombreDelArchivo);
// comienzo con la lectura del archivo
FileOutputStream out = new FileOutputStream (new File (NombreDelArchivo));
// FileOutputStream out = new FileOutputStream (new File (Ruta + "/" + NombreDelArchivo));
byte[] buf = new byte[52428800]; //50 MB
int len;
while ((len = in.read (buf)) > 0) {
out.write (buf, 0, len);
}//Fin del while ************************
in.close ();//Cliente
out.close ();//Salida
System.out.println ("Se envio exitosamente la Imagen...");
}//************ Fin del Try
catch (java.io.IOException e) {
e.printStackTrace ();
System.out.println ("Error: " + e);
}// Fin del Catch ***********************
}//Fin del While True
}//**************************
//******* R U N *************
public static void main (String a[]) {
Servidor servidor = new Servidor ();
// Ponemos a correr nuestro hilo servidor
new Thread (servidor).start ();
}//*********************************
//*************
}//******************** implements Runnable
//********************************************
Fijate los cambios que le hice y cualquier cosa consultame.
Saludos...
Marcadores