mirror of
https://github.com/balkian/SWCM.git
synced 2024-11-22 12:42:29 +00:00
Java version with simple thread management added
This commit is contained in:
parent
ad3297b84b
commit
ad903e0124
55
ServidorConcurrente/HebraServ.java
Normal file
55
ServidorConcurrente/HebraServ.java
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
33
ServidorConcurrente/ServWebPatternConc.java
Normal file
33
ServidorConcurrente/ServWebPatternConc.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package ServidorConcurrente;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.*;
|
||||||
|
|
||||||
|
public class ServWebPatternConc {
|
||||||
|
public static int maxCon = 10;
|
||||||
|
public static void main (String args[]) {
|
||||||
|
try {
|
||||||
|
ServerSocket serv = new ServerSocket(8080);
|
||||||
|
System.out.println("showserver created at port 8080.");
|
||||||
|
ThreadGroup workers = new ThreadGroup("WebWorkers");
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if(workers.activeCount()<maxCon){
|
||||||
|
System.out.println("Hay "+workers.activeCount()+" hebras corriendo.");
|
||||||
|
Socket conn = serv.accept();
|
||||||
|
Thread hs = new Thread(workers, new HebraServ(conn));
|
||||||
|
hs.start();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
try{
|
||||||
|
Thread.sleep(500);
|
||||||
|
}
|
||||||
|
catch(Exception ex){
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e) { System.err.println(e); }
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user