Autor Tema: Abrir y cerrar sockets Java ServerSocket Socket DataInputStream writeUTF  (Leído 5473 veces)

manuelfer

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Buenas a todos, tengo una duda que no se como y que se tiene que cerrar en un programa donde tiene Socket, ServerSocket, Entrada y salida de datos y buffer's.

Acá dejo una parte mi programa para que vean como cierro yo los socket y demás, quiero saber si estoy en lo correcto o hay que corregir algo, ya que tengo que improvisar mucho porque me ha saltado muchas excepciones y quiero saber la forma correcta. Muchas gracias !!


Código: [Seleccionar]
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor {

private static final int PUERTO = 8080;

public static void main(String[] args) {

try {
ServerSocket server = new ServerSocket (PUERTO);
Socket cliente = server.accept();
DataInputStream dis = new DataInputStream (cliente.getInputStream());
DataOutputStream dos = new DataOutputStream (cliente.getOutputStream());
BufferedInputStream bis = null;
BufferedOutputStream bos = null;

try {

String nombreArchivo = dis.readUTF();
System.out.println("El cliente pidio que se busque el archivo: "+nombreArchivo);

File file = new File ("/Users/ignaciolopez/Documents/"+nombreArchivo);

System.out.println("Se encontro el archivo: "+file.getName()+" - Peso: "+file.length());

int tamano = (int) file.length();
dos.writeInt(tamano);
dos.writeUTF(file.getName());

bis = new BufferedInputStream (new FileInputStream (file));
    bos = new BufferedOutputStream (cliente.getOutputStream());

byte buffer [] = new byte [tamano];

for (int i =0; i<buffer.length; i++){
buffer[i] = (byte) bis.read();
}

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

bos.flush();

} finally {
server.close();
cliente.close();
dis.close();
dos.close();
bis.close();
bos.close();
}

} catch (IOException e) {
e.printStackTrace();

}

}

}
« Última modificación: 06 de Febrero 2016, 14:37 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Abrir y cerrar sockets Java ServerSocket Socket DataInputStream writeUTF
« Respuesta #1 en: 06 de Febrero 2016, 14:38 »
Buenas ignacio yo lo veo bien y compila sin errores, no sé muy bien a qué te refieres con que te saltan excepciones si es que es en otra parte del programa o que te estaban saltando con este código anteriormente.

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".