Задача За минимальное время написать 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
-
Запах И Вкус
19 Oct, 24 -
Сервисные Работники
19 Oct, 24 -
Хроника Зимних Олимпийских Игр.
19 Oct, 24 -
Запускаем Коллективный Подбор Решений
19 Oct, 24 -
Внутри Дата-Центра Ost На Ул. Боровая
19 Oct, 24