ttt
30 уровень
Симферополь

Http сервер

Статья из группы Архив info.javarush
Всем привет! Кто нибудь писал уже серверы? Задача стоит следующая - сделать сервер и клиент, которые передавали бы друг другу строки через HTTP. Собственно с какой стороны подойти?
Комментарии (7)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Fry Уровень 41
13 декабря 2015
ttt Уровень 30
12 декабря 2015
Короче есть наброски кода. Но он работает как-то очень нестабильно, может кто найдет в нем баги
Сервер

public class HttpServ {

    public static void main(String[] args) throws Throwable {
        ServerSocket ss = new ServerSocket(8087);
        while (true) {
            Socket s = ss.accept();
            System.err.println("Client accepted");
            new Thread(new SocketProcessor(s,ss)).start();
        }

    }

    private static class SocketProcessor implements Runnable {

        private Socket s;
        private InputStream is;
        private OutputStream os;
        private ServerSocket serverSocket;

        private SocketProcessor(Socket s,ServerSocket serverSocket) throws Throwable {
            this.s = s;
            this.is = s.getInputStream();
            this.os = s.getOutputStream();
            this.serverSocket = serverSocket;
        }

        public void run() {
            try {
                readInputHeaders();
                writeResponse("<xsl></xsl>");
            } catch (Throwable t) {
                /*do nothing*/
            }
            try {
                s.close();
                //serverSocket.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: Zaglushka\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 vo
Fry Уровень 41
12 декабря 2015
большая задача на 32 вроде, там все есть.
Все делается через сокеты.