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;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.net.Socket; import java.net.Socket;
@ -13,13 +14,15 @@ import java.util.Date;
* - Подключение вынесено в отдельный поток, чтобы обеспечить возможность подключения к серверу множества клиентов * - Подключение вынесено в отдельный поток, чтобы обеспечить возможность подключения к серверу множества клиентов
*/ */
public class Connection extends Thread{ public class Connection extends Thread{
public BufferedReader in; //public BufferedReader in;
public InputStream in;
public BufferedWriter out; public BufferedWriter out;
//public BufferedReader console; //public BufferedReader console;
public Connection(Socket socket) throws IOException{ public Connection(Socket socket) throws IOException{
System.out.println("Соединение с клиентом установлено ..."); 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())); out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//console = new BufferedReader(new InputStreamReader(System.in)); //console = new BufferedReader(new InputStreamReader(System.in));
Thread threadConn = new Thread(this); Thread threadConn = new Thread(this);

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

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