diff --git a/src/main/java/ru/molokoin/Connection.java b/src/main/java/ru/molokoin/Connection.java index 56c5639..7f97325 100644 --- a/src/main/java/ru/molokoin/Connection.java +++ b/src/main/java/ru/molokoin/Connection.java @@ -3,6 +3,7 @@ package ru.molokoin; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; @@ -13,13 +14,15 @@ import java.util.Date; * - Подключение вынесено в отдельный поток, чтобы обеспечить возможность подключения к серверу множества клиентов */ public class Connection extends Thread{ - public BufferedReader in; + //public BufferedReader in; + public InputStream in; public BufferedWriter out; //public BufferedReader console; public Connection(Socket socket) throws IOException{ System.out.println("Соединение с клиентом установлено ..."); - in = new BufferedReader(new InputStreamReader(socket.getInputStream())); + //in = new BufferedReader(new InputStreamReader(socket.getInputStream())); + in = socket.getInputStream(); out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); //console = new BufferedReader(new InputStreamReader(System.in)); Thread threadConn = new Thread(this); diff --git a/src/main/java/ru/molokoin/InputReader.java b/src/main/java/ru/molokoin/InputReader.java index 41d8713..992d846 100644 --- a/src/main/java/ru/molokoin/InputReader.java +++ b/src/main/java/ru/molokoin/InputReader.java @@ -1,6 +1,7 @@ package ru.molokoin; import java.io.IOException; +import java.io.InputStreamReader; /** * Нить чтения входящего от клиента потока данных @@ -14,18 +15,41 @@ public class InputReader extends Thread{ @Override public void run(){ String line; - + StringBuilder header = new StringBuilder(); Boolean f = true; + InputStreamReader isr = new InputStreamReader(connection.in); + try { - while (!connection.in.ready()) ; + //while (!connection.in.ready()) ; + while (!isr.ready());//ожидание открытия потока index++; System.out.println("Номер запроса: " + index); - StringBuilder header = new StringBuilder(); StringBuilder body = new StringBuilder(); Boolean isHeader = true; //Boolean isBody = false; - while (connection.in.ready()) { - line = connection.in.readLine(); // ждем сообщения с сервера + while (isr.ready()) { + //прочитали значение + char c = (char)connection.in.read(); + //проверка eof (конец файла) + if (c == (-1)) { + break;//разорвали цикл, можно закрыть сокет + } + header.append(c); + //проверка переноса строки + if (c == '\n') { + /** + * первый перенос строки свидетельствует об оканчании header/ + * после первого переноса можно считывать тело запроса, если это post-запрос + */ + break; + } + + + + + + // + line = isr.readLine(); // ждем сообщения с сервера if(isHeader){ if (line != null){ header.append(line); diff --git a/target/classes/ru/molokoin/Connection.class b/target/classes/ru/molokoin/Connection.class index 8936f8c..8d1caad 100644 Binary files a/target/classes/ru/molokoin/Connection.class and b/target/classes/ru/molokoin/Connection.class differ diff --git a/target/classes/ru/molokoin/InputReader.class b/target/classes/ru/molokoin/InputReader.class index 200dc2d..f899b59 100644 Binary files a/target/classes/ru/molokoin/InputReader.class and b/target/classes/ru/molokoin/InputReader.class differ