Browse Source

qq

parseRequest
esoe 2 years ago
parent
commit
bd08db3b98
  1. 7
      src/main/java/ru/molokoin/Connection.java
  2. 34
      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);

34
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,18 +15,41 @@ public class InputReader extends Thread{
@Override @Override
public void run(){ public void run(){
String line; String line;
StringBuilder header = new StringBuilder();
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 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(); // ждем сообщения с сервера //прочитали значение
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(isHeader){
if (line != null){ if (line != null){
header.append(line); header.append(line);

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