Http-Сервер За 15 Минут



Задача За минимальное время написать HTTP-сервер, который после запуска сможет корректно реагировать на браузер и обслуживать простую HTML-страницу (минимальное время, чтобы кода было мало, чтобы новичку было легче разобраться) .

У меня это заняло около 15 минут. Сервер вроде справляется с задачей.

Цель примера — показать, что такое Socket, ServerSocket, InputStream, OutputStream и Thread.



Решение

 
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.InputStreamReader;
 import java.io.BufferedReader;
 
 /**
  * Created by yar 09.09.2009
  */
 public class HttpServer {
 
     public static void main(String[] args) throws Throwable {
         ServerSocket ss = new ServerSocket(8080);
         while (true) {
             Socket s = ss.accept();
             System.err.println("Client accepted");
             new Thread(new SocketProcessor(s)).

start(); } } private static class SocketProcessor implements Runnable { private Socket s; private InputStream is; private OutputStream os; private SocketProcessor(Socket s) throws Throwable { this.s = s; this.is = s.getInputStream(); this.os = s.getOutputStream(); } public void run() { try { readInputHeaders(); writeResponse("<html><body><h1>Hello from Habrahabr</h1></body></html>"); } catch (Throwable t) { /*do nothing*/ } finally { try { s.close(); } catch (Throwable t) { /*do nothing*/ } } System.err.println("Client processing finished"); } private void writeResponse(String s) throws Throwable { String response = "HTTP/1.1 200 OK\r\n" + "Server: YarServer/2009-09-09\r\n" + "Content-Type: text/html\r\n" + "Content-Length: " + s.length() + "\r\n" + "Connection: close\r\n\r\n"; String result = response + s; os.write(result.getBytes()); os.flush(); } private void readInputHeaders() throws Throwable { BufferedReader br = new BufferedReader(new InputStreamReader(is)); while(true) { String s = br.readLine(); if(s == null || s.trim().

length() == 0) { break; } } } } }



Как начать

1) Создавать Файл HttpServer.java 2) В этот файл вставлять исходный текст 3) Скомпилируйте командой javac HttpServer.java 4) Бежать по команде Java -CP. HTTP-сервер (порт 8080 должен быть свободен) 5) Откройте браузер и перейдите по ссылке.

http://localhost:8080/ Теги: #java #server #http #http-server #15 минут #java

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.