Hola, como pasais el path me lo puedes indicar paso a paso?
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:209)
at java.io.FileOutputStream.<init>(FileOutputStream.java:99)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Cliente {
private static Socket socket;
public static void main(String[] args) throws IOException, ClassNotFoundException {
if(args.length != 2){
System.out.println("Debe especificar el host y el puerto del servidor");
System.exit(-1);
}
String hostServidor = args[0];
int puertoServidor = Integer.parseInt(args[1]);
try{
socket = new Socket(hostServidor, puertoServidor);
System.out.println("El cliente se ha conectado con exito al servidor " + hostServidor + ":" + puertoServidor);
}catch(IOException e){
e.printStackTrace();
}
}
//el inputstreamreader coge un chorro de bytes y lo transforma a characteres
InputStreamReader isr = new InputStreamReader(System.in);
//el bufferedReder pasa de los characteres a lineas,tiene metodos readline() que lee lineas por ejemplo
BufferedReader in = new BufferedReader(isr);
// lo mismo es que si hiciera: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
public void menuPrincipal(Socket sock) throws IOException, ClassNotFoundException{
boolean repetir;
char op = 0;
repetir=true;
while(repetir){
//si quisiera (pero es ilogico ya que el metodo que voy a llamar esta en la misma clase),
//me podria crear un objeto MenuPersona menuPersona = new MenuPersona(); fuera del metodo
//para que no me lo pise, y luego llamarlo en lugar de Menu(); llamar a MenuPersona.Menu()
Menup();
op = in.readLine().charAt(0);
switch(op){
case '1' :
System.out.println("--Monstramos lista el directorio local del cliente--");
repetir=true;
break;
case '2':
System.out.println("--Monstramos lista el directorio remoto del servidor--");
VerFicheros vf = new VerFicheros();
vf.VerFichero();
repetir=true;
break;
case '3':
System.out.println("--envíamos un fichero especificado(del directorio local al remoto)--");
EnviarFichero ef = new EnviarFichero();
ef.EscribirFichero(sock);
ef.EnvioFicherosAServidor(socket);
repetir=true;
break;
case '4':
System.out.println("--recibe un fichero especificado(del riectorio remoto al local)--");
repetir=true;
break;
case '5':
System.out.println("salir cerrando la conexión con el servidor y terminando el proceso cliente");
repetir = false;
System.out.println("Adios");
return;
}
}
}
private static void Menup() {
System.out.println("||================================== MENU PRINCIPAL ==================================||");
System.out.println("|| ---------------------- ¡¡¡¡Hola!!! Elige una opcion por favor ---------------------||");
System.out.println("|| ---------------------- --------------------- ||");
System.out.println("|| 1.- 'lc': lista el directorio local del cliente ||");
System.out.println("|| 2.- 'lr': lista el directorio remoto del servidor ||");
System.out.println("|| 3.-'s': envía un fichero especificado(del directorio local al remoto) ||");
System.out.println("|| 4.-'r': recibe un fichero especificado(del riectorio remoto al local) ||" );
System.out.println("|| 5.-'q': salir cerrando la conexión con el servidor y terminando el proceso cliente||");
System.out.println("||====================================================================================||");
System.out.println("||====================================================================================||");
}
}
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Servidor{
private final static int puerto = 0;
public static void main(String[] args){
try{
ServerSocket serverSocket = new ServerSocket(puerto);
System.out.println("El Servidor se ata al puerto " + serverSocket.getLocalPort());
while(true){
Socket conn = serverSocket.accept();
Procesador p = new Procesador(conn);
p.start();
}
} catch(IOException e){
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;
public class Procesador extends Thread{
private static Socket conn;
public Procesador(Socket conn){
this.conn = conn;
}
public synchronized void run(){
System.out.println("La direccion IP del cliente es: " + conn.getLocalAddress() + " y su puerto es " + conn.getPort());
Cliente cliente = new Cliente();
try {
cliente.menuPrincipal(conn);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.File;
public class VerFicheros {
//
public void VerFichero() {
/**Lo primero que haremos será obtener una referencia al directorio que queremos listar.
*Utilizaremos, en este caso, la clase File para almacenar la referencia.*/
File dir = new File("c:\\");
/**Uno de los métodos de la clase File es .list().
* Mediante este método recuperaremos los ficheros que componen el directorio especificado.
* Lo que nos devuelve es un array de cadenas.*/
String[] ficheros = dir.list();
if (ficheros == null)
System.out.println("No hay ficheros en el directorio especificado");
else {
for (int x=0;x<ficheros.length;x++){
System.out.println(ficheros);
}
}
}
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class EnviarFichero {
public void EnvioFicherosAServidor(Socket sock){
try{
Scanner s=new Scanner(System.in);
System.out.println("Ingrese el path del archivo a enviar: " );
String path=s.nextLine();
PrintStream envio=new PrintStream(sock.getOutputStream());
//String path = "C:\\hola.txt";
System.out.println(path);
FileInputStream origen=new FileInputStream(path);
byte[] buffer = new byte[1024];
int len;
while((len=origen.read(buffer))>0){
envio.write(buffer,0,len);
}
}catch(IOException e){
e.printStackTrace();
}
}
public void EscribirFichero(Socket socket) throws IOException{
try{
Scanner s=new Scanner(System.in);
System.out.println("Ingrese el path donde desea escribir el archivo: " );
String path=s.nextLine();
InputStream llegada = socket.getInputStream();
//String path = "C:\\Java";
System.out.println(path);
FileOutputStream destino=new FileOutputStream(path);
byte[] buffer = new byte[1024];
int len;
while((len=llegada.read(buffer))>0){
destino.write(buffer,0,len);
}
}catch(IOException e){
e.printStackTrace();
}
}
}
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:209)
at java.io.FileOutputStream.<init>(FileOutputStream.java:99)
no entiendo porque les dejo aqui mi codigo a ver si me pueden ayudar please
clase Cliente:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Cliente {
private static Socket socket;
public static void main(String[] args) throws IOException, ClassNotFoundException {
if(args.length != 2){
System.out.println("Debe especificar el host y el puerto del servidor");
System.exit(-1);
}
String hostServidor = args[0];
int puertoServidor = Integer.parseInt(args[1]);
try{
socket = new Socket(hostServidor, puertoServidor);
System.out.println("El cliente se ha conectado con exito al servidor " + hostServidor + ":" + puertoServidor);
}catch(IOException e){
e.printStackTrace();
}
}
//el inputstreamreader coge un chorro de bytes y lo transforma a characteres
InputStreamReader isr = new InputStreamReader(System.in);
//el bufferedReder pasa de los characteres a lineas,tiene metodos readline() que lee lineas por ejemplo
BufferedReader in = new BufferedReader(isr);
// lo mismo es que si hiciera: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
public void menuPrincipal(Socket sock) throws IOException, ClassNotFoundException{
boolean repetir;
char op = 0;
repetir=true;
while(repetir){
//si quisiera (pero es ilogico ya que el metodo que voy a llamar esta en la misma clase),
//me podria crear un objeto MenuPersona menuPersona = new MenuPersona(); fuera del metodo
//para que no me lo pise, y luego llamarlo en lugar de Menu(); llamar a MenuPersona.Menu()
Menup();
op = in.readLine().charAt(0);
switch(op){
case '1' :
System.out.println("--Monstramos lista el directorio local del cliente--");
repetir=true;
break;
case '2':
System.out.println("--Monstramos lista el directorio remoto del servidor--");
VerFicheros vf = new VerFicheros();
vf.VerFichero();
repetir=true;
break;
case '3':
System.out.println("--envíamos un fichero especificado(del directorio local al remoto)--");
EnviarFichero ef = new EnviarFichero();
ef.EscribirFichero(sock);
ef.EnvioFicherosAServidor(socket);
repetir=true;
break;
case '4':
System.out.println("--recibe un fichero especificado(del riectorio remoto al local)--");
repetir=true;
break;
case '5':
System.out.println("salir cerrando la conexión con el servidor y terminando el proceso cliente");
repetir = false;
System.out.println("Adios");
return;
}
}
}
private static void Menup() {
System.out.println("||================================== MENU PRINCIPAL ==================================||");
System.out.println("|| ---------------------- ¡¡¡¡Hola!!! Elige una opcion por favor ---------------------||");
System.out.println("|| ---------------------- --------------------- ||");
System.out.println("|| 1.- 'lc': lista el directorio local del cliente ||");
System.out.println("|| 2.- 'lr': lista el directorio remoto del servidor ||");
System.out.println("|| 3.-'s': envía un fichero especificado(del directorio local al remoto) ||");
System.out.println("|| 4.-'r': recibe un fichero especificado(del riectorio remoto al local) ||" );
System.out.println("|| 5.-'q': salir cerrando la conexión con el servidor y terminando el proceso cliente||");
System.out.println("||====================================================================================||");
System.out.println("||====================================================================================||");
}
}
Clase Servidor:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Servidor{
private final static int puerto = 0;
public static void main(String[] args){
try{
ServerSocket serverSocket = new ServerSocket(puerto);
System.out.println("El Servidor se ata al puerto " + serverSocket.getLocalPort());
while(true){
Socket conn = serverSocket.accept();
Procesador p = new Procesador(conn);
p.start();
}
} catch(IOException e){
e.printStackTrace();
}
}
}
Clase Procesador(para los hilos):
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;
public class Procesador extends Thread{
private static Socket conn;
public Procesador(Socket conn){
this.conn = conn;
}
public synchronized void run(){
System.out.println("La direccion IP del cliente es: " + conn.getLocalAddress() + " y su puerto es " + conn.getPort());
Cliente cliente = new Cliente();
try {
cliente.menuPrincipal(conn);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Clase VerFicheros(para ver listado de ficheros):
import java.io.File;
public class VerFicheros {
//
public void VerFichero() {
/**Lo primero que haremos será obtener una referencia al directorio que queremos listar.
*Utilizaremos, en este caso, la clase File para almacenar la referencia.*/
File dir = new File("c:\\");
/**Uno de los métodos de la clase File es .list().
* Mediante este método recuperaremos los ficheros que componen el directorio especificado.
* Lo que nos devuelve es un array de cadenas.*/
String[] ficheros = dir.list();
if (ficheros == null)
System.out.println("No hay ficheros en el directorio especificado");
else {
for (int x=0;x<ficheros.length;x++){
System.out.println(ficheros[x]);
}
}
}
}
Clase EnviarFicheros(la uso para enviar):
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class EnviarFichero {
public void EnvioFicherosAServidor(Socket sock){
try{
Scanner s=new Scanner(System.in);
System.out.println("Ingrese el path del archivo a enviar: " );
String path=s.nextLine();
PrintStream envio=new PrintStream(sock.getOutputStream());
//String path = "C:\\hola.txt";
System.out.println(path);
FileInputStream origen=new FileInputStream(path);
byte[] buffer = new byte[1024];
int len;
while((len=origen.read(buffer))>0){
envio.write(buffer,0,len);
}
}catch(IOException e){
e.printStackTrace();
}
}
public void EscribirFichero(Socket socket) throws IOException{
try{
Scanner s=new Scanner(System.in);
System.out.println("Ingrese el path donde desea escribir el archivo: " );
String path=s.nextLine();
InputStream llegada = socket.getInputStream();
//String path = "C:\\Java";
System.out.println(path);
FileOutputStream destino=new FileOutputStream(path);
byte[] buffer = new byte[1024];
int len;
while((len=llegada.read(buffer))>0){
destino.write(buffer,0,len);
}
}catch(IOException e){
e.printStackTrace();
}
}
}