PageRenderTime 28ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/priv/java/src/main/java/net/reversehttp/NormalHttpServer.java

http://github.com/tonyg/reversehttp
Java | 52 lines | 45 code | 7 blank | 0 comment | 4 complexity | 1aa1c014ac6fdfed9f259fc11e675116 MD5 | raw file
Possible License(s): MIT
  1. package net.reversehttp;
  2. import java.io.IOException;
  3. import java.net.ServerSocket;
  4. import java.net.Socket;
  5. public class NormalHttpServer extends HttpServer {
  6. private int port;
  7. private ServerSocket serverSocket;
  8. public NormalHttpServer(int port, RequestHandler handler)
  9. throws IOException {
  10. super(handler);
  11. this.port = port;
  12. this.serverSocket = new ServerSocket(port);
  13. }
  14. public int getPort() {
  15. return port;
  16. }
  17. public ServerSocket getServerSocket() {
  18. return serverSocket;
  19. }
  20. @Override
  21. public void pollOnce() throws IOException {
  22. Socket conn = serverSocket.accept();
  23. try {
  24. singleRequest(conn);
  25. } catch (IOException ioe) {
  26. complain(ioe.toString(), ioe);
  27. }
  28. }
  29. protected void singleRequest(Socket conn) throws IOException {
  30. HttpRequest req = new HttpRequest();
  31. req.setClientHost(conn.getInetAddress().getHostAddress());
  32. req.setClientPort(conn.getPort());
  33. if (!req.readFrom(conn.getInputStream())) {
  34. req.setResponse(400, "Bad syntax");
  35. } else {
  36. req.setHttpVersion("1.0");
  37. handleRequest(req);
  38. }
  39. HttpResponse resp = req.getResponse();
  40. if (resp != null) {
  41. resp.writeOn(conn.getOutputStream());
  42. }
  43. conn.close();
  44. }
  45. }