Compare commits

..

2 Commits

Author SHA1 Message Date
esoe 4069e1f3fb qq 2 years ago
esoe bd08db3b98 qq 2 years ago
  1. 7
      src/main/java/ru/molokoin/Connection.java
  2. 74
      src/main/java/ru/molokoin/InputReader.java
  3. BIN
      target/classes/ru/molokoin/Connection.class
  4. BIN
      target/classes/ru/molokoin/InputReader.class

7
src/main/java/ru/molokoin/Connection.java

@ -3,6 +3,7 @@ package ru.molokoin; @@ -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; @@ -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);

74
src/main/java/ru/molokoin/InputReader.java

@ -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) {

BIN
target/classes/ru/molokoin/Connection.class

Binary file not shown.

BIN
target/classes/ru/molokoin/InputReader.class

Binary file not shown.
Loading…
Cancel
Save