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
-
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 !!
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();
}
}
}
-
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