?? cliente.java
字號:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package controlador;import java.io.*;import java.net.*;import vista.ventanaCliente;/** *clase que pide los archivos desde el servidor. no se implementa en un hilo * ya que el cliente solicita simpre los datos y el servidor * le responde inmediatamente. * @author Camilo Andres */public class cliente{ /**constante que dira donde esta el servidor FTP*/ public static final String IP_SERVER ="localhost"; /**puerto por donde el servidor recibe conexiones*/ public static final int PORT =4500; //-------------------------------------------------------------------------- //socket que se comunicara con le servidor. private Socket conexionServer; /**flujos de E/S de objetos para poder enviar y recibir cualquier tipo de info.*/ private ObjectOutputStream salidaDatos; private ObjectInputStream entradaDatos; //bandera para controlar la existencia del hilo. private boolean finConexion; private String IP; //-------------------------------------------------------------------------- /** * el constructor se conecta al servidor por medio de la IP y el puerto del mismo, a su vez que * crea los flujo de E/S. * @param IP del servidor * @param PORT puerto por donde el servidor escucha. * @throws java.net.UnknownHostException * @throws java.io.IOException */ public cliente(String IP,int PORT) throws UnknownHostException, IOException { super(); //se conecta al servidor suminstrando la IP y el Puerto conexionServer=new Socket(IP, PORT); finConexion=false; //se crean los flujos de E/S para comunicarse con el servidor. salidaDatos= new ObjectOutputStream(conexionServer.getOutputStream()); entradaDatos= new ObjectInputStream (conexionServer.getInputStream()); this.IP=IP; } /** * metodo para enviar un mensaje al servidor * @param msj */ private void enviarMsjServidor(Object msj) throws IOException { salidaDatos.writeObject(msj); salidaDatos.flush(); salidaDatos.reset(); } /** * metodo para desconectarse segura y correctamente del servidor * siguiendo el protocolo de desconexion. * @throws java.io.IOException * @throws java.lang.ClassNotFoundException * @throws java.lang.Exception */ public void desconectar() throws IOException, ClassNotFoundException, Exception { enviarMsjServidor("DESCONECTAR"); finConexion=true; conexionServer.close(); } /** * metodo para recibir un archivo despues de haberlo pedido al servidor. * como la descarga se implementa en un hilo, sepueden descargar varios * archivos al tiempo. * @param nombreArchivo nombre del archivo a descargar. * @throws java.io.IOException * @throws java.lang.ClassNotFoundException */ public void recibirArchivo(String nombreArchivo) throws IOException, ClassNotFoundException { //siguiendo el protocolo de aplicacion hay que enviar //la palabra BAJAR_ARCHIVO y luego el nombre del archivo enviarMsjServidor("BAJAR_ARCHIVO"); enviarMsjServidor(nombreArchivo); //el servidor envia la cliente el puerto por donde se tiene que conectar //para bajar el archivo. int port=(Integer)entradaDatos.readObject(); //se conecta a la IP del servidor por el puerto que le indico. Socket conRX=new Socket(IP,port); //Crea un objeto que recibe el archivo. hiloRXFileCliente hRx=new hiloRXFileCliente(conRX, nombreArchivo); //crea un hilo con Thread que recibe una instancia de una clase Runnable. Thread hilo=new Thread(hRx); //lanza el hilo. hilo.start(); } /** * metodo para pedir la lista de archivos al servidor. * @return * @throws java.io.IOException * @throws java.lang.ClassNotFoundException */ public String[] listaArchivosServidor() throws IOException, ClassNotFoundException { //segun el protocolo de aplicacion se debe enviar //la palabra LISTA_ARCHIVOS al servidor para solicitar //la lista de archivos que se pueden descargar. enviarMsjServidor("LISTA_ARCHIVOS"); entradaDatos.readObject(); //lee la lista de archivos. String[] lista=(String[])entradaDatos.readObject(); return lista; } /** * metodo para recibir un archivo despues de haberlo pedido al servidor. * @param nombreArchivo * @throws java.io.IOException * @throws java.lang.ClassNotFoundException */ public void enviarArchivo(File Archivo) throws IOException, ClassNotFoundException { //siguiendo el protocolo de aplicacion hay que enviar //la palabra BAJAR_ARCHIVO y luego el nombre del archivo enviarMsjServidor("SUBIR_ARCHIVO"); enviarMsjServidor(Archivo.getName()); //el servidor envia la cliente el puerto por donde se tiene que conectar //para subir el archivo. int port=(Integer)entradaDatos.readObject(); //se conecta al servidor por el puerto que le indico y la IP del mismo.. Socket conTX=new Socket(IP,port); //Crea un objeto que transmite el archivo. hiloTxFileCliente hTx=new hiloTxFileCliente(conTX, Archivo.getAbsolutePath()); //crea un hilo con Thread que recibe una instancia de una clase Runnable. Thread hilo=new Thread(hTx); //lanza el hilo. hilo.start(); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -