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 = ("

Recurso no encontrado

" + path + "").getBytes("US-ASCII"); code ="404 Not Found"; } } else { body = ("

Comando desconocido

").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); } } }