mirror of
https://github.com/balkian/SWCM.git
synced 2024-11-26 06:12:28 +00:00
56 lines
1.8 KiB
Java
56 lines
1.8 KiB
Java
|
package ServidorConcurrente;
|
||
|
|
||
|
import java.util.*;
|
||
|
import java.io.*;
|
||
|
import java.net.*;
|
||
|
|
||
|
class HebraServ extends Thread {
|
||
|
|
||
|
private Socket c;
|
||
|
|
||
|
public HebraServ (Socket conn) {
|
||
|
c = conn;
|
||
|
}
|
||
|
|
||
|
public void run () {
|
||
|
try {
|
||
|
byte[] body, header, lc = {13,10};
|
||
|
String l, code, x, path="", CR_LF = new String(lc,"US-ASCII");
|
||
|
int j, n = 0;
|
||
|
|
||
|
LineNumberReader netIn = new LineNumberReader(new InputStreamReader(c.getInputStream(), "UTF-8"));
|
||
|
OutputStream netOut = c.getOutputStream();
|
||
|
|
||
|
System.out.println(l = URLDecoder.decode(netIn.readLine(), "UTF-16"));
|
||
|
if (l.matches("GET .*")) {
|
||
|
path=l.replaceFirst("GET[ ]+/([^ \\&#]*)[ \\&#].*", "$1" );
|
||
|
if ((path.matches(""))||(path.matches(".*/"))) { path += "index.html" ; }
|
||
|
|
||
|
while (!(x = netIn.readLine()).equals("")) { System.out.println(x); }
|
||
|
|
||
|
try {
|
||
|
RandomAccessFile i = new RandomAccessFile(path, "r");
|
||
|
i.read(body = new byte[(int)i.length()]);
|
||
|
code = "200 OK";
|
||
|
|
||
|
} catch (FileNotFoundException f) {
|
||
|
body = ("<html><body><h1> Recurso no encontrado </h1>" + path + "</body></html>").getBytes("US-ASCII");
|
||
|
code ="404 Not Found";
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
body = ("<html><body><h1>Comando desconocido</h1></body></html>").getBytes("US-ASCII");
|
||
|
code = "400 Bad Request";
|
||
|
}
|
||
|
|
||
|
header = ("HTTP/1.0 " + code.toString() + CR_LF + "Content-type: text/html" + CR_LF + "Content-length: " + String.valueOf(body.length) + CR_LF + CR_LF).getBytes("US-ASCII");
|
||
|
netOut.write(header);
|
||
|
netOut.write(body);
|
||
|
netOut.flush();
|
||
|
c.close();
|
||
|
} catch (IOException e) {
|
||
|
System.err.println(e);
|
||
|
}
|
||
|
}
|
||
|
}
|