From bd08db3b98d04f5cd00ca202cf051d6f62b9c0fa Mon Sep 17 00:00:00 2001 From: esoe Date: Fri, 10 Feb 2023 15:45:20 +0300 Subject: [PATCH] qq --- src/main/java/ru/molokoin/Connection.java | 7 ++-- src/main/java/ru/molokoin/InputReader.java | 34 ++++++++++++++++--- target/classes/ru/molokoin/Connection.class | Bin 2467 -> 2322 bytes target/classes/ru/molokoin/InputReader.class | Bin 2012 -> 718 bytes 4 files changed, 34 insertions(+), 7 deletions(-) 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 8936f8c979f3693944a5eb047d47e0126a365352..8d1caad3af5e37d1774682175038533f12878715 100644 GIT binary patch delta 1031 zcmZXS&2v*#7{-4mU-y!^wlSrpDJA8jB~4PfO08{Ew1TA+NP$`fgB6TTT0--IX;Q?m z3Me?k3^QF#}Hnv+iLlw$W_@iIB6n%Bym+l&`K{G0E#+yyL#2MM;|e_GWsnE83d$Y9*Jqr_xT_ z8UceZ^@6W&_ty$@W+qW6Bvx1b+~A_KtXq7?P5qPa>H2+qk`au>>a_nsFu1EmC>F2L z_n3iLgGj1DG$s3Z9lOrq$BZ;^r$jwEJ5(dFA-yi%mNhJaLl+))VG&{{J;dl`m_721 z!n`BZy)71#yem7Q?&K)PP2xFy)9hTAi_N9te==Vu75uoyCpFSFvav^u z)VT5+duAmcM-yBTg;a${1K7@vf4QwM`B$iNEt+-3``Kb-qY8xRDBeRp*=8Aqnc+-=)@i mkG7_63X|gmnchb3-Xxn6*e!00b5MRk`}h3N%>Pc);_kmw5yo)< delta 1158 zcmZvb+jCP@6vlr$C+RtyIn#zz+JsA5u!Y_<7AU2yQd`nQubzghz-5o4pTldorIb_<5WCIvi+oIym6T(GTjuK*HI_upu7N zxj=kxKTnxIhyJ5dUtU*v+QY_iu^2bV!}@L@9-Q=;()R*isTcKSYrAulIWv1ne`B?) z6Z%(chjpAeeb3qxd|A<|*MhC>E@ybn=2bIO3#O^jIRN{|I(;_H)tW4dRN>syVDnKPw&uHcMxIvAA;1;ga4S z8ftjc<1JZAg)&>ODjI9*#X@#5F_AWFR|wmDp#KcDZTm>!OivFlEe)@%xLhM+%5{$$ ze5#upek*-VgX92HJr$aMAQEXU6YHtcmaMWf*<0q(3f&d@?vRjfzjXJR?m&g13Qyi) zw2GCK-LcueG81dU6yO=DafuinA;=ayTG&M^2Z=GpRwmiTv`pKvO7fWE2+zvX{CbWV zxdvl$3ubvwWpH!ZRXorKvfp1R~p zcT4SKx=Y$(!?3Qq2#d*6qOAlJBDwD3wEoN9Qj)`_lD$9iN`3?I)`SrGOgbbDtCmpR(|*ZgK>7#7-5`e;+DJywqxXXum0_|1W$Rjwo}ygyUrS~Busg^y?ZB&konms$NC nHP&!rIE)kF@B_-xb!A5q`;5kteRoX2JwgZdrh^e(gXt9*jNau{DYLMGn=gJ&McEjz{-c%%Ez!0 z6tuVS34974K)h&SbGRS(E6(|hJ_7mv{rn1GfX<^_6ZcEl5{Pb-dD6=hGwz)@XWcS( z1k|N*dTR5zR&-;FGRqU6Swp3>*SRhZNj5GfnhNbFR*}<*8fHevUCO33GfJmSic;&y zv*zzgO{b=u`E$>1amK!OvLn&PUWgX<1=i!?e-YL)Gd}8GRbTZ~$Z8Y}8X@XfK?BX| rA&8IB#{vXzkuPYER=1z9`^Hp5lXLO+(?`U2_-A1Qn@j@4S;N5(@W4Vx literal 2012 zcmZ`(O;;Ob6n@@(Fpv&~0;Q%Q5Ny@9Lo&dWVTKcuo^o7R zKhCkP)N|al9^JBqS^}q4dUWB!)nw&De}~KB^G-fU1e2V+Gxxpsx%WQzN)Um9YXiidF?J0*7{U@3(DJ*DMvs&?cbV*367PHY?B^zSbGvqZX?{2<-|^P+@;c zR6LK90v^Mq%>^**-u}$&te(=7dH!PoynwKRQ$*QcLq#XLSP)s46_?p-H8_nk3VJFk zH?gvu))!Uu;zerNnKVhsM@^^WDZ@%nq=~T@Q*f63u$vFXhBeopF--PDHC`5Iaei>N zou8eJ+})6~>8v?Vb9bHX+^5c3G!#GtuSnX@6F*!=OCBaB3lqU>Dxx6QRoc>$Zn2+Q z!^7nqR`?_b5xlPA0^VQ~rS1HsKvQ_H33cDZfP#L3#v)&3$*H&`15=h{z9!2YL8D~& zEfqs9x@1u{p=^M+RlFmqRcG>rpOOWaCL=QXQGuTQ^4pVgfw@>U#u@&+J66$9HLfuI z89TWmpC<(_m33jbGZYOuKj!W^Th6-k*jWoXPs#X`+~>J3oek#~XDj!0hhlM;1NLft$@Gy#3$@bDxnV=as^vOz zpSU!5dih_20Phd*t%Ilh_`N?tUFU-b2l-#+ifd5kO2D^z94eR$QpZDiplcHiUELdK z+O<3AIz0d%R6413?VI!3XvPs*(N1nJVsXC~!|>G6LI(M_ZwtYZu19EkgyUIs+~4`< zAynT@2KNx%PY}7<@X{vEQI^H4S@dObQ3^M4d9-jweG($-U&VY0W-uP~XEA&qr@Mbg zdrx;3@#!Mm7~!NK54MULuWRlaJitjBgo3^bi+3w5N=`Z+?0mb5W1~gj399vE@m>jg zojmxljbCxCaDGU(B-__rW*R7MLIVzST$^#0vM3oEKoG-dK^(1^=C;0pHY9Ky1~>92 zEc0h*$30H{H#mjw5XSdhq3hJ&Mjw9Tn)wSC-6{-`b@E%N!Zc&JPAu+P{E3^;7+Vxy zV20RU`urG4KKbZ51D&^iVg)gaIo{3_=LVD=3cU&u6vm5Z7*r5(e@Az44pqESVDPRa cW|QqOKzSo=%H%tYumnZ3sUTGr=*9!{Uz&mOasU7T