Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: manuelfer en 04 de Febrero 2016, 05:21

Título: Abrir y cerrar sockets Java ServerSocket Socket DataInputStream writeUTF
Publicado por: manuelfer en 04 de Febrero 2016, 05:21
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();

}

}

}
Título: Re:Abrir y cerrar sockets Java ServerSocket Socket DataInputStream writeUTF
Publicado por: Ogramar 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