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.