Servidor casero.
Publicado: 26 Ene 2012, 18:55
Como su nombre lo dice, nos sirve como un servidor local para los archivos exe.
funcional donde sea que se ejecute una maquina virtual de java XD
Es como HFS solo que mini.
Cabe destacar que si recibimos una peticion asi [Enlace externo eliminado para invitados]
entonces donde ejecutemos el servidor debera existir el archivo server.exe en el mismo path. Ejemplo que el servidor se ejecute en c:\carpeta\
entonces en c:\carpeta debe existir el archivo server.exe.
funcional donde sea que se ejecute una maquina virtual de java XD
Es como HFS solo que mini.
Cabe destacar que si recibimos una peticion asi [Enlace externo eliminado para invitados]
entonces donde ejecutemos el servidor debera existir el archivo server.exe en el mismo path. Ejemplo que el servidor se ejecute en c:\carpeta\
entonces en c:\carpeta debe existir el archivo server.exe.
Código: Seleccionar todo
import java.io.*;
import java.net.Socket;
/**
*
* @author AdWiNd
*/
public class EnviaPeticion extends Thread {
private Socket socket;
public EnviaPeticion(Socket sok) {
socket = sok;
}
@Override
public void run() {
try {
//Creamos una instancia para leer la peticion
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String file=br.readLine();
//AQUI Obtenemos el nombre del archivo ya que normalmente viene asi GET /ARCHIVO HTTP...
String NombreArchivo=file.substring(file.indexOf("/")+1, file.indexOf("HTTP")-1);
System.out.println(NombreArchivo);
//Obtenemos el flujo de salida donde vamos a enviar el archivo
OutputStream sl=socket.getOutputStream();
//Leeemos el archivo para enviarlo
FileInputStream in=new FileInputStream(NombreArchivo);
int i;
byte BUF[]=new byte[1024];
//lo vamos enviando de kb x kb
while((i=in.read(BUF))>-1){
sl.write(BUF, 0, i);
}
//cerramos tod
sl.close();
in.close();
socket.close();
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
System.out.println("Sali");
}
}
Código: Seleccionar todo
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Servidor extends Thread{
private ServerSocket server;
private Socket socket;
private boolean CONECTADO;
public Servidor(int puerto){
try {
server=new ServerSocket(puerto);
CONECTADO=true;
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
@Override
public void run(){
do{
try {
socket=server.accept();
//Creamos una clase enviapeticion que a la vez extiende de la clase Thread y como parametro recibe el socket y lo iniciamos para que sea MultiThread.
EnviaPeticion env=new EnviaPeticion(socket);
env.start();
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}while(CONECTADO);
}
public static void main(String[] args) {
Servidor server =new Servidor(80);
server.start();
}
}
Este servidor es multiThread puede recibir muchas peticiones de archivos y atenderlos todos.