|
|
|
@ -1,6 +1,7 @@
@@ -1,6 +1,7 @@
|
|
|
|
|
package ru.molokoin; |
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
import java.io.InputStreamReader; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Нить чтения входящего от клиента потока данных |
|
|
|
@ -14,47 +15,68 @@ public class InputReader extends Thread{
@@ -14,47 +15,68 @@ public class InputReader extends Thread{
|
|
|
|
|
@Override |
|
|
|
|
public void run(){ |
|
|
|
|
String line; |
|
|
|
|
|
|
|
|
|
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(); // ждем сообщения с сервера
|
|
|
|
|
if(isHeader){ |
|
|
|
|
if (line != null){ |
|
|
|
|
header.append(line); |
|
|
|
|
System.out.println("header: " + line); |
|
|
|
|
}else { |
|
|
|
|
isHeader = false; |
|
|
|
|
//isBody = true;
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(!isHeader){ |
|
|
|
|
if (line != null){ |
|
|
|
|
body.append(line); |
|
|
|
|
System.out.println("body: " + line); |
|
|
|
|
while (isr.ready()) { |
|
|
|
|
//прочитали значение
|
|
|
|
|
char c = (char)connection.in.read(); |
|
|
|
|
//проверка eof (конец файла)
|
|
|
|
|
if (c == (-1)) { |
|
|
|
|
break;//разорвали цикл, можно закрыть сокет
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
header.append(c); |
|
|
|
|
//проверка переноса строки
|
|
|
|
|
if (c == '\n') { |
|
|
|
|
/** |
|
|
|
|
* тут происходит: |
|
|
|
|
* - анализ поступающих от клиента сообщений |
|
|
|
|
* - инициация событий (методов), запрошенных клиентом |
|
|
|
|
* первый перенос строки свидетельствует об оканчании header/ |
|
|
|
|
* после первого переноса можно считывать тело запроса, если это post-запрос |
|
|
|
|
*/ |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//header.append(c);
|
|
|
|
|
// //
|
|
|
|
|
// line = isr.readLine(); // ждем сообщения с сервера
|
|
|
|
|
// if(isHeader){
|
|
|
|
|
// if (line != null){
|
|
|
|
|
// header.append(line);
|
|
|
|
|
// System.out.println("header: " + line);
|
|
|
|
|
// }else {
|
|
|
|
|
// isHeader = false;
|
|
|
|
|
// //isBody = true;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// if(!isHeader){
|
|
|
|
|
// if (line != null){
|
|
|
|
|
// body.append(line);
|
|
|
|
|
// System.out.println("body: " + line);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// /**
|
|
|
|
|
// * тут происходит:
|
|
|
|
|
// * - анализ поступающих от клиента сообщений
|
|
|
|
|
// * - инициация событий (методов), запрошенных клиентом
|
|
|
|
|
// */
|
|
|
|
|
|
|
|
|
|
// if (line.equals("stop")) {
|
|
|
|
|
// connection.down(); // харакири
|
|
|
|
|
// break; // выходим из цикла если пришло "stop"
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // if (line.equals("stop")) {
|
|
|
|
|
// // connection.down(); // харакири
|
|
|
|
|
// // break; // выходим из цикла если пришло "stop"
|
|
|
|
|
// // }
|
|
|
|
|
} |
|
|
|
|
System.out.println(header); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (IOException | NullPointerException e) { |
|
|
|
|