From f92f3cdb8eac2cb42c581060aeba2ddba349f234 Mon Sep 17 00:00:00 2001 From: MikhailTreushnikov Date: Sun, 5 Jul 2020 11:23:09 +0300 Subject: [PATCH] Lab 6 --- .DS_Store | Bin 0 -> 8196 bytes task1/.DS_Store | Bin 0 -> 6148 bytes task1/.idea/artifacts/task1_jar.xml | 8 + task1/.idea/compiler.xml | 26 ++ task1/.idea/description.html | 2 + task1/.idea/encodings.xml | 6 + task1/.idea/gradle.xml | 4 + task1/.idea/misc.xml | 16 + task1/.idea/modules.xml | 8 + task1/.idea/uiDesigner.xml | 125 ++++++++ task1/.idea/vcs.xml | 7 + task1/.idea/workspace.xml | 299 ++++++++++++++++++ task1/out/artifacts/task1_jar/task1.jar | Bin 0 -> 8616 bytes task1/pom.xml | 12 + task1/src/.DS_Store | Bin 0 -> 6148 bytes task1/src/main/.DS_Store | Bin 0 -> 6148 bytes task1/src/main/java/.DS_Store | Bin 0 -> 6148 bytes task1/src/main/java/ClientServer/Client.java | 31 ++ task1/src/main/java/ClientServer/Server.java | 51 +++ task1/src/main/java/sample/Controller.java | 94 ++++++ task1/src/main/java/sample/Main.java | 23 ++ task1/src/main/resources/META-INF/MANIFEST.MF | 3 + task1/src/main/resources/sample.fxml | 41 +++ .../target/classes/ClientServer/Client.class | Bin 0 -> 1155 bytes .../target/classes/ClientServer/Server.class | Bin 0 -> 2071 bytes task1/target/classes/META-INF/MANIFEST.MF | 3 + task1/target/classes/sample.fxml | 41 +++ .../classes/sample/Controller$1$1.class | Bin 0 -> 1180 bytes .../target/classes/sample/Controller$1.class | Bin 0 -> 692 bytes .../classes/sample/Controller$2$1.class | Bin 0 -> 1088 bytes .../target/classes/sample/Controller$2.class | Bin 0 -> 692 bytes task1/target/classes/sample/Controller.class | Bin 0 -> 3701 bytes task1/target/classes/sample/Main.class | Bin 0 -> 1168 bytes task1/task1.iml | 15 + task2/.DS_Store | Bin 0 -> 6148 bytes task2/.idea/compiler.xml | 13 + task2/.idea/misc.xml | 14 + task2/.idea/workspace.xml | 132 ++++++++ task2/pom.xml | 12 + task2/src/.DS_Store | Bin 0 -> 6148 bytes task2/src/main/.DS_Store | Bin 0 -> 6148 bytes task2/src/main/java/Client.java | 28 ++ task2/src/main/java/Server.java | 29 ++ task2/src/main/java/ServerOne.java | 51 +++ task2/src/main/resources/wisdom.txt | 164 ++++++++++ task2/target/classes/Client.class | Bin 0 -> 1712 bytes task2/target/classes/Server.class | Bin 0 -> 1769 bytes task2/target/classes/ServerOne.class | Bin 0 -> 2649 bytes task2/target/classes/wisdom.txt | 164 ++++++++++ task2/task2.iml | 2 + task3/.DS_Store | Bin 0 -> 6148 bytes task3/.idea/compiler.xml | 13 + task3/.idea/misc.xml | 14 + task3/.idea/workspace.xml | 133 ++++++++ task3/pom.xml | 34 ++ task3/src/.DS_Store | Bin 0 -> 6148 bytes task3/src/main/.DS_Store | Bin 0 -> 6148 bytes task3/src/main/java/Client.java | 28 ++ task3/src/main/java/Server.java | 68 ++++ task3/src/main/resources/massage.json | 36 +++ task3/target/classes/Client.class | Bin 0 -> 1712 bytes .../classes/META-INF/task3.kotlin_module | Bin 0 -> 16 bytes task3/target/classes/Server.class | Bin 0 -> 4892 bytes task3/target/classes/massage.json | 36 +++ task3/task3.iml | 2 + task4/.DS_Store | Bin 0 -> 6148 bytes task4/.idea/compiler.xml | 13 + task4/.idea/misc.xml | 14 + task4/.idea/workspace.xml | 152 +++++++++ task4/pom.xml | 19 ++ task4/src/.DS_Store | Bin 0 -> 6148 bytes task4/src/main/.DS_Store | Bin 0 -> 6148 bytes task4/src/main/java/Client.java | 43 +++ task4/src/main/java/Server.java | 29 ++ task4/src/main/java/ServerOne.java | 67 ++++ task4/target/classes/Client.class | Bin 0 -> 2225 bytes .../classes/META-INF/task4.kotlin_module | Bin 0 -> 16 bytes task4/target/classes/Server.class | Bin 0 -> 1769 bytes task4/target/classes/ServerOne.class | Bin 0 -> 3660 bytes task4/task4.iml | 2 + 80 files changed, 2127 insertions(+) create mode 100644 .DS_Store create mode 100644 task1/.DS_Store create mode 100644 task1/.idea/artifacts/task1_jar.xml create mode 100644 task1/.idea/compiler.xml create mode 100644 task1/.idea/description.html create mode 100644 task1/.idea/encodings.xml create mode 100644 task1/.idea/gradle.xml create mode 100644 task1/.idea/misc.xml create mode 100644 task1/.idea/modules.xml create mode 100644 task1/.idea/uiDesigner.xml create mode 100644 task1/.idea/vcs.xml create mode 100644 task1/.idea/workspace.xml create mode 100644 task1/out/artifacts/task1_jar/task1.jar create mode 100644 task1/pom.xml create mode 100644 task1/src/.DS_Store create mode 100644 task1/src/main/.DS_Store create mode 100644 task1/src/main/java/.DS_Store create mode 100644 task1/src/main/java/ClientServer/Client.java create mode 100644 task1/src/main/java/ClientServer/Server.java create mode 100644 task1/src/main/java/sample/Controller.java create mode 100644 task1/src/main/java/sample/Main.java create mode 100644 task1/src/main/resources/META-INF/MANIFEST.MF create mode 100644 task1/src/main/resources/sample.fxml create mode 100644 task1/target/classes/ClientServer/Client.class create mode 100644 task1/target/classes/ClientServer/Server.class create mode 100644 task1/target/classes/META-INF/MANIFEST.MF create mode 100644 task1/target/classes/sample.fxml create mode 100644 task1/target/classes/sample/Controller$1$1.class create mode 100644 task1/target/classes/sample/Controller$1.class create mode 100644 task1/target/classes/sample/Controller$2$1.class create mode 100644 task1/target/classes/sample/Controller$2.class create mode 100644 task1/target/classes/sample/Controller.class create mode 100644 task1/target/classes/sample/Main.class create mode 100644 task1/task1.iml create mode 100644 task2/.DS_Store create mode 100644 task2/.idea/compiler.xml create mode 100644 task2/.idea/misc.xml create mode 100644 task2/.idea/workspace.xml create mode 100644 task2/pom.xml create mode 100644 task2/src/.DS_Store create mode 100644 task2/src/main/.DS_Store create mode 100644 task2/src/main/java/Client.java create mode 100644 task2/src/main/java/Server.java create mode 100644 task2/src/main/java/ServerOne.java create mode 100644 task2/src/main/resources/wisdom.txt create mode 100644 task2/target/classes/Client.class create mode 100644 task2/target/classes/Server.class create mode 100644 task2/target/classes/ServerOne.class create mode 100644 task2/target/classes/wisdom.txt create mode 100644 task2/task2.iml create mode 100644 task3/.DS_Store create mode 100644 task3/.idea/compiler.xml create mode 100644 task3/.idea/misc.xml create mode 100644 task3/.idea/workspace.xml create mode 100644 task3/pom.xml create mode 100644 task3/src/.DS_Store create mode 100644 task3/src/main/.DS_Store create mode 100644 task3/src/main/java/Client.java create mode 100644 task3/src/main/java/Server.java create mode 100644 task3/src/main/resources/massage.json create mode 100644 task3/target/classes/Client.class create mode 100644 task3/target/classes/META-INF/task3.kotlin_module create mode 100644 task3/target/classes/Server.class create mode 100644 task3/target/classes/massage.json create mode 100644 task3/task3.iml create mode 100644 task4/.DS_Store create mode 100644 task4/.idea/compiler.xml create mode 100644 task4/.idea/misc.xml create mode 100644 task4/.idea/workspace.xml create mode 100644 task4/pom.xml create mode 100644 task4/src/.DS_Store create mode 100644 task4/src/main/.DS_Store create mode 100644 task4/src/main/java/Client.java create mode 100644 task4/src/main/java/Server.java create mode 100644 task4/src/main/java/ServerOne.java create mode 100644 task4/target/classes/Client.class create mode 100644 task4/target/classes/META-INF/task4.kotlin_module create mode 100644 task4/target/classes/Server.class create mode 100644 task4/target/classes/ServerOne.class create mode 100644 task4/task4.iml diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bc6093bf30a3d6db26fcc5552e8033d8539116a1 GIT binary patch literal 8196 zcmeHMzi-n(6n@vH!3jcSKx!5w53R%yp~Q~bN~lr@$&djFVMGT&tsO^AgyV}6hX_JY z7Is!(VCFwyV&@M)4E!0e!@D22b`qPV5>>b--F@eK_s*B^lkfZ-03h|TTLCBnfQE%( z;WAb$jQLqvvJKgD9g$!>z+GsC1W;4?g&VAuk zwPHXq@Lw{(_6Hpc!K2w8zqnxwU<(4UVFXX1((+;>KPHcKCZmCz^NTa^dZVCR{zf)7Gh5k9nwHn{ zSMpD+E}d9`9gIhHd-#Z5-Lr$PBij!s^}@F8JnVHQ$AxQms2|upzcb{)J-35H9v}65 zmrm+*?7JgAk0l(MmeX>_h2nI&XBZ{jELUbFeY(G2F6mWsZ#K(m+q;#+)=B^Qi|NbR ztGE2;0+G88Tou=0{SI3ZGQ87@)u#PH=#P2(w9#pf`MaR(Mn8F%#vfF39sEQJ(7h%TrC2ry7xG=Tq|_zA>UV zlxKxERi5gCJg9-Pb75dp%u;0ee>3^}|GC^tO`;f33|veGNTy*m>bSN)Z@G)hWVyDE zm?%5pA33LZ6cCTgS7z7HDcmMSES}W zO`x!2oY5&|`Ww?iH7Q%Nb+7dapjLS*UkH>FJ??qgmB;J0h zb+)kMAZ~7d^onn>0pSIx3ANDpr?I3$p?iUCvpKP0~s8&H)pe*t*wsQ z?)K&#HQU|ocGTnTo%uYF8xML<_YY4$ewuxrfB9yoNdm95mHQqq;X4dZ!iQ*_XF5NI z$7DCDq!{EJ(~!z#g2V>mS7{7vZb9#<2jbJ;AI>GE;_Dw3=&~>a%m6cRGYt3*PTswl z;dm5gfEl<&44C~vK@El;D~ERLKx3}}zy{n_V4I&tQ=>eF9xI24K!hs=x>Dh<7{Zmq zuY6wUv2y6jN%+f$@J|;0h9d0KF}||tBtnPWG6T%OG6QwjZJYD|`QPvV%SGH{2AF|c z#eit+MSFcr$)Bw&lQU + + $PROJECT_DIR$/out/artifacts/task1_jar + + + + + \ No newline at end of file diff --git a/task1/.idea/compiler.xml b/task1/.idea/compiler.xml new file mode 100644 index 0000000..93374a5 --- /dev/null +++ b/task1/.idea/compiler.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task1/.idea/description.html b/task1/.idea/description.html new file mode 100644 index 0000000..cc10d56 --- /dev/null +++ b/task1/.idea/description.html @@ -0,0 +1,2 @@ +Simple JavaFX 2.0 application that includes simple .fxml file with attached controller and Main class to quick start. Artifact to build JavaFX application is provided. + \ No newline at end of file diff --git a/task1/.idea/encodings.xml b/task1/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/task1/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/task1/.idea/gradle.xml b/task1/.idea/gradle.xml new file mode 100644 index 0000000..3e3960b --- /dev/null +++ b/task1/.idea/gradle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/task1/.idea/misc.xml b/task1/.idea/misc.xml new file mode 100644 index 0000000..6af4c51 --- /dev/null +++ b/task1/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/task1/.idea/modules.xml b/task1/.idea/modules.xml new file mode 100644 index 0000000..511470e --- /dev/null +++ b/task1/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/task1/.idea/uiDesigner.xml b/task1/.idea/uiDesigner.xml new file mode 100644 index 0000000..3b00020 --- /dev/null +++ b/task1/.idea/uiDesigner.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task1/.idea/vcs.xml b/task1/.idea/vcs.xml new file mode 100644 index 0000000..def6a6a --- /dev/null +++ b/task1/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/task1/.idea/workspace.xml b/task1/.idea/workspace.xml new file mode 100644 index 0000000..1b53c78 --- /dev/null +++ b/task1/.idea/workspace.xml @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1359379246138 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/src/main/java/ClientServer/Server.java + 35 + + + file://$PROJECT_DIR$/src/main/java/sample/Controller.java + 91 + + + + + \ No newline at end of file diff --git a/task1/out/artifacts/task1_jar/task1.jar b/task1/out/artifacts/task1_jar/task1.jar new file mode 100644 index 0000000000000000000000000000000000000000..08fbb34cb1643196f708bd604710381424983dcb GIT binary patch literal 8616 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 + + 4.0.0 + + niit + task1 + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/task1/src/.DS_Store b/task1/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3e7c033411d4dbd0d38dba6cdeee4d251e28845a GIT binary patch literal 6148 zcmeHK!AiqG5S^`2w-vDmL65lz9(rh1>Oq81_25m2=s~3>wrC*DN|Rc&R`MJA2Y!lQ z;OFSf?poC9Ra9nR_RY@DY_e~|ZUz8Eqt~hdlmS4Z5*CWsd?7SWIwl3{aS#Q~u^X$i zFjgVq$Q`1tG zWNEf^;$Nt~p9NVjZ3NvT>g@&DMQH7PrQ(qtga=W(-z?8>sU!=cq}|oYQLBw1$A?kU zQvHVNC9PD?%(DDE-ckHcTYRlH-p>Z z-M!fhfgh@tIg4-bfW~NnSAI8%RdS9#igzG`Hl&b!BIpsv-V=mf7G{7MUXE8U39u#3x5lyPF zC5Et-gD~kh?%DXWb7 P3jYXb8n|Hwew2Y%+!AK4 literal 0 HcmV?d00001 diff --git a/task1/src/main/.DS_Store b/task1/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e891ffeea8e3a471c75e3c0ca4781243bf950470 GIT binary patch literal 6148 zcmeHK%}(1u5S|TbyG~U#2c&ZJrBV+$Bv8Sjs$`{b;8w|q9@+|Q5*1gj7sU<{q(OcS zc!NF)Pr&1}-|TLq@^^)(nvrI|+1Z)3_gib%Lqw`S9`uOXM5LjNjR4IZ!sD#Bq~SeH zpyD~Ub90d9CPkko6j^)*c<-9@of0~x^qJNz-Fngb8XuZTTqV`G>?fno-20eRhpD%BjLGMAlI~{1$zFT;gDI*cD~2PR zoDGHu`SK|%24>PX<6=!I60mEoSmJ!y-@g2t-SR37cOAT7kC_xirf_6;N$p!Ml__742@wOuziE7Ux@mb zDs)AJ0bxKGSX>7DQK+9U?kmch2?N5wBQe0|LkMMzJk}2F(SgR606_kYv;y1y`U69D z03(mJLwF#{r2<{5@+F4ym4kBW7>|5>?a-x@vQNf5{>jQ$D9RTeDzxFGB8Son1H!;{ z29{j6&G-M-{q_I#BtV6$9HWA-G{PpTfU#h~=wz b1!@KUkPTquv33X#M1BM;4blh$56ZwF-PLHt literal 0 HcmV?d00001 diff --git a/task1/src/main/java/.DS_Store b/task1/src/main/java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6f68be987b36f77825ea452f7bd57c62a611bd60 GIT binary patch literal 6148 zcmeHK!EO^V5FNK6bpnVSkm%7DBo0AJnyNWeNUO9QdaJYu4uINSvZ5<(*HL!U2-2Ya zjrI@t6uyAZDbMzRnuc;gq7m{)<2SbF+49rcUK5cROom;e77R=rMl z-d3}IztdLRy`A~IA)h?$zBo8O{q%WuKL2uImqY>wnYBlZKj9L=twNoJ<2=*(N8}iO zoeGNRltz#>xgp|L^j{ZoA$P@u>-D>B^?bYk*TO9<@`hN@!`q!Gz@NIje@fGU0R&EYZd$$Zp`FW4lM-*U&l5uSMes?8v2w8fB|FW5G^qOBVc9lg;(I8D)0kl Cy|hpO literal 0 HcmV?d00001 diff --git a/task1/src/main/java/ClientServer/Client.java b/task1/src/main/java/ClientServer/Client.java new file mode 100644 index 0000000..3325ff2 --- /dev/null +++ b/task1/src/main/java/ClientServer/Client.java @@ -0,0 +1,31 @@ +package ClientServer; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.Socket; + +public class Client { + private String host; + private int port; + private Socket server = null; + + public Client(String host, int port) { + this.host = host; + this.port = port; + } + + public void connectClient (){ + try { + server = new Socket(host,port); + } catch (IOException e) { + e.printStackTrace(); + } + } + public String getTime() throws IOException { + BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream())); + String time; + time= in.readLine(); + return time; + } +} diff --git a/task1/src/main/java/ClientServer/Server.java b/task1/src/main/java/ClientServer/Server.java new file mode 100644 index 0000000..7371432 --- /dev/null +++ b/task1/src/main/java/ClientServer/Server.java @@ -0,0 +1,51 @@ +package ClientServer; + +import java.io.IOException; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Date; + +public class Server { + private int serversocket; + private ServerSocket server = null; + private Socket client = null; + private PrintWriter out; + + public Server(int serversocket) { + this.serversocket = serversocket; + } + + public void createServer () throws IOException, InterruptedException { + try { + server = new ServerSocket(serversocket); + } catch (IOException e) { + System.out.println("Ошибка связывания с портом"+ serversocket); + System.exit(-1); + } + try { + System.out.print("Ждем соединения\n"); + client = server.accept(); + System.out.println("Клиент подключился\n"); + } catch (IOException e) { + System.out.println("Не могу установить соединение\n"); + System.exit(-1); + } + out = new PrintWriter(client.getOutputStream(),true); + while (true) { + out.println(sendTime()); + Thread.sleep(1000); + } + } + + private String sendTime(){ + Date date = new Date(); + return date.toString(); + } + + public void disconnect() throws IOException { + out.close(); + server.close(); + client.close(); + } +} diff --git a/task1/src/main/java/sample/Controller.java b/task1/src/main/java/sample/Controller.java new file mode 100644 index 0000000..b1938c0 --- /dev/null +++ b/task1/src/main/java/sample/Controller.java @@ -0,0 +1,94 @@ +package sample; + +import ClientServer.Client; +import ClientServer.Server; +import javafx.application.Platform; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; + +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.Timer; +import java.util.TimerTask; + +public class Controller implements Initializable { + + @FXML + private Button btConnect; + @FXML + private TextField tfIP; + @FXML + private TextField tfPort; + @FXML + private Label lbTime; + @FXML + private Button btDisConnect; + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + tfIP.setText("127.0.0.1"); + tfPort.setText("1235"); + } + private Client client = null; + private Timer t; + private TimerTask task; + private Timer t1; + private TimerTask task1; + + private Server server = null; + + @FXML + public void connect(){ + new Thread(()->{ + server = new Server(Integer.parseInt(tfPort.getText())); + try { + server.createServer(); + } catch (IOException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }).start(); + t=new Timer(); + task = new TimerTask() { + @Override public void run() { + Platform.runLater(new Runnable() { + @Override + public void run() { + client = new Client (tfIP.getText(),Integer.parseInt(tfPort.getText())); + client.connectClient(); + } + }); + } + }; + t.schedule(task,200); + t1=new Timer(); + task1 = new TimerTask() { + @Override public void run() { + Platform.runLater(new Runnable() { + @Override + public void run() { + try { + lbTime.setText(client.getTime()); + } catch (IOException e) { + e.printStackTrace(); + } + } + }); + } + }; + t1.schedule(task1,300,1000); + } + + @FXML + public void disconnect() throws IOException { + task.cancel(); + task1.cancel(); + server.disconnect(); + lbTime.setText("Disconnect"); + } +} diff --git a/task1/src/main/java/sample/Main.java b/task1/src/main/java/sample/Main.java new file mode 100644 index 0000000..6cd2571 --- /dev/null +++ b/task1/src/main/java/sample/Main.java @@ -0,0 +1,23 @@ +package sample; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; + +public class Main extends Application { + + @Override + public void start(Stage primaryStage) throws Exception{ + Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml")); + primaryStage.setTitle("Time"); + primaryStage.setScene(new Scene(root)); + primaryStage.show(); + } + + + public static void main(String[] args) { + launch(args); + } +} diff --git a/task1/src/main/resources/META-INF/MANIFEST.MF b/task1/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..1f6226f --- /dev/null +++ b/task1/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: sample.Main + diff --git a/task1/src/main/resources/sample.fxml b/task1/src/main/resources/sample.fxml new file mode 100644 index 0000000..c86e9cf --- /dev/null +++ b/task1/src/main/resources/sample.fxml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + diff --git a/task1/target/classes/ClientServer/Client.class b/task1/target/classes/ClientServer/Client.class new file mode 100644 index 0000000000000000000000000000000000000000..9273654aa51ad8833e3aa7ff1e8d556724f1ef1b GIT binary patch literal 1155 zcmZuw>rN9v7(KHsEG(rI=uKz^FK8)9z2F^DA(}KPl2}5*&+T@Ag|gc$TjCq}R}!F! zBtC!-Wjr%26vQ;0-T5x(obT++?>|3(0a(O}g#_jYF@i^GSx`&K#A6G6cw*wI1ryIq zESh+(LN6>>cxhn}uhjC|#2XWD1){tDVJI+G*|U%AQp5IkO4TrMy&aWn`T=vIEYN=_ zgCiLTjCKk=8J4QPvoAx|^)I=e8!ii^3pZiPvztU(_3Kh#q~dz=OY5K}gAKdZU}UV~ zJ9cB!4qUbG2BYDwdnk~qtTtTfg;h;m>TF0i?D(E1ov;%Sh!hlsAX=(J@A{?k`loM> zY=*Aysg7!BJNs*PQxnh}0dq%&8}0#{l7-ouss#+!6UbfyuC%tdWgzQcrCpbSGAGpC z)+G-WTUEamIP$ZrMjPtrTTsTvkik?8DWqc<#aImENYW1NdCy8!l@%D*;p;=hu!JcZ ze37~?N8r{)qU<$WA-|xs4?0p~c!y<${9Y{|V)%#|a{R|yfrLiUhhV+7M~kVk$-_WE z`nM6-4(E!~xhpIJnF|AzKE?uev$g?>}a2AOVSs>|0RlEGZAc#giU;t8ov5N)HM%-=CknLES4F>68m zG_PU=J^mzP8Aeljo#YIPKTW(0l}&SY)tBokxyyGG#-@pTQ6}zVhJ|WmhZ5At`Ev|z zox@Tpj57?i5o=>uDTuGl|6qZkx#PNcf;>6$<*&?~?=mT!5AcvAlk6$bbpx~PSF|So IMU6H07sKo3h5!Hn literal 0 HcmV?d00001 diff --git a/task1/target/classes/ClientServer/Server.class b/task1/target/classes/ClientServer/Server.class new file mode 100644 index 0000000000000000000000000000000000000000..c3d0fc284e405a6dc162b5ca9a112e66e767174b GIT binary patch literal 2071 zcmZuyTT@$A6#h;~IN|hg3zwF*(zMbFsV&}HZEdv_luDr`*qd!NBwIK%oW$g$wq9l| z9Y<$$?3)kH=qs-jAuvGk-KTy2g>U`?_1pUd5?h#I?X%Z?eQT|qKmS?V1n?TZwr~W4 z4LFP;Mcz~7eG|hLBDi4Ug9eP?qKQ!p4H%4KOr4h$xva>zg(M~{>UQdPDB`;e|3LZNMX`M+QI=0Dng%~$S5}?H<2+ROnhp< zE{eikQ7GopcZ6ra7&cHJung=TnMvJE^}E9BPin2C);dL%bk-3r^;>IHwuE)L5+xmh z#L4wvDmbopwcvQ7piECYuH&6C5bhoByTW52mk|b7<5+6W_WDyURvZmC+E_jG3lk! zcP^&#+CMvEz}l7MCVUJGl<@d;6)Q_zEZJYKQq^ zhpV`bP0r}1c2`-$E+@QD%6lTSJwpGpN!~AdVzzb|b)uXjk(%YS)Ti=!&YFQ^z0Z!> zvy)e8Dh>B@m7cMvilbgGnAN8t3L+aY^J+!2E>qhnvf5H{&tVTET2W=1Ry#z0TN|Mt ziLDo)S%Xq#alNO6H&*iUC2uR{o-Iobajk^q?5!m6wB&}`=9(T%OcOZ56)9$g$g3CS zg3^ejv$>+cLB5Jd_!x!}QVYeekXkW)a?A9|anKru+A458c)Lcu5YP6+3XFuYjF2LA ziG9lmKh{>SkaqGV1)Ax77hh}}O=v+ITJfruX?y+-yv`dv>G*tz@CHuMH=`Kcv{zc+ zCe{(To>)S71@(+IkDif5MAy-9eFau*R~fbvmeE*7QyI;nRkTnZYb_&|pd?gA8?#fa zc8cfu3aRgoiYmQ#D(`h=>}G^L%jn{*i>2)?V_!S=ucCYY-@kP#&4|Hd0i(Fgvkt1v zGb|D4Anl^GlO^sZRC}nk52vsnLwJt*2WiobasJHQKpeMmh>t@L7wNEuBTip!niBs`gBz6p^$*N~sCf+9H##XvB$eY5gaUBPUP<-TQ83z~0 z2ANZBdQp7U|or!5)YGO@_&HeA)NmYkk}4t literal 0 HcmV?d00001 diff --git a/task1/target/classes/META-INF/MANIFEST.MF b/task1/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..1f6226f --- /dev/null +++ b/task1/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: sample.Main + diff --git a/task1/target/classes/sample.fxml b/task1/target/classes/sample.fxml new file mode 100644 index 0000000..c86e9cf --- /dev/null +++ b/task1/target/classes/sample.fxml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + diff --git a/task1/target/classes/sample/Controller$1$1.class b/task1/target/classes/sample/Controller$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c13c57651f9440cf881167484669855d584a3256 GIT binary patch literal 1180 zcmaJ>e^1j;6g`g(3iSaS8v_*)b?P>hZV3Jw40N(&$<#y$#y`96IZDbaX*L_7RM-opIe5#fu1q}^l4HXT`3?spw?dQpU#=x6W3a{>%zAt=+>6ULE96G|NyE5=x z#}Qt>Ql*qNTiQX5VYUz(QQT!n*4>U^m~7cneCQptg|}n29r8@IT+4KJP0v=i?@THY z3^Q?b;gJciCm9k2MXhhUJM$FM=gr! zP`<*DQd$hhlwIRvdtX=q6+Uo%>PZ=OBNLNyxI`zfBH%iHN~_n;nN_?l(rf( zmuj)41bjUc>ekb2CXXsmB5fKM0`<=+kr>@CWZ?c%SuLi zP;pZRqANUx(L>Yo1wravAyo7aL$S$_i}5$Z!S`z{m+9Va#MRh}nJN_?=N)J*E3KtC zy8mU4Q}ZMZHR8nreTNgEn+KLksf$LR=McSFOp`Z9R*kUo=%vN)V5Kt*eG6k|XdR&# zpo&>qb5Rs-;uax_57`(+&>ik`xfl*J)=MW~CrJE6@=M=5$M7jeE`dhi9HVC#JBR-H z(tYC;d~o~(5_C`v1~%xrZ-z2>bU)iWM#e*t#Y B88rX^ literal 0 HcmV?d00001 diff --git a/task1/target/classes/sample/Controller$1.class b/task1/target/classes/sample/Controller$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5624d1851a14a23d8f799927cbc69395c46dadf8 GIT binary patch literal 692 zcmZuvTTj$L7(KIHwot0O?8;3tTDt# zS_|7(yeLG$&~R6>NZv4XvVsqWN~C?Goi$1cyG!FesioUzSm;iezdU8A_szLrXl7E2 z59Q!Y*b{!HsMF3&&ebWm($}MA-ODk|kCP=mk_&99DRw<^^x2d)7l+c5HSc%z`YZp= zsdJ!nWeTY;kA=H3=ONZ(Y@ick22qSzbVz2*QqoI$ez+MTiLr&}WPAdMx?UwMomA!QEKN8gvgOUJc)E)pDIX4%%(;_Brymt}7sd`4rpb23ov;jx z-KF)@pf&l-1~+MGS@ql)L>rwE*E{-a{1@>*1Yd}%{s&X{Y*EFqOWN-%M!y5Xju-tqbTcmh(~I9tfPWO z9aYpcJkc?Pry7QND2E$_~DAzUA8H^n%h2L;_5Qu=GXa&5}b%ojRWaxXYEBx}x zIzcuZ>4cjM)0M=C#Y2Wn!#ffTIm?k^uh(e_|A4n#@{C)a&D}%pJId}mGpY!NsU*5` zol>U#o}{&+s2Q;otrLFAO~*5L_P5V$(G49>Qrt*0-n~L=cw$t zo2x7-2J&o6+w}rRws%E%>>U}H#*Bdxp>D8p@KZbGg7U;A|w({uJ+IO((52VhcmwNSkPyFmIUGS{bpOAKB@`-UN_c8TnHL_Lc+dYNgcWRn=6)xs?H z$-9dZ_ArkR*U3xB(6>7gZlPbsT|#I`ebO+OA(|4IDcqx5gMvr#06991lW&xE_0!|+ EAKp**9{>OV literal 0 HcmV?d00001 diff --git a/task1/target/classes/sample/Controller$2.class b/task1/target/classes/sample/Controller$2.class new file mode 100644 index 0000000000000000000000000000000000000000..6357125931c68dd414e4b30348c8f15ffdec1d47 GIT binary patch literal 692 zcmZuv-A>d%7(KIHw@`|^?DD6eq7+>qu}ZvB!_7tlNhJgbiI+neU|@D;Go2D&%L}8? z#0T)92;Y=VxY%vdZ@!%`h{9We9UaCz?Bk#W80@w!E1oPj~)3<%5BeId{_N^gwZUZfu`nf^28p3Cpn1 z%_?QZ^+kGEYV8k?D6m4;8qy83R?9o2tVZt?VlYfowoSF~L>rqw!8U%O_M^f)rr011 zu!APW`Fj*vn4yaB6&oW&8=WE7NBV307x7;N--xRI8;>5?qKaXcv=1vrzXQS!83W8x YRl^)90d*{35fhZPsn?*@Kf(QS2iG`}kN^Mx literal 0 HcmV?d00001 diff --git a/task1/target/classes/sample/Controller.class b/task1/target/classes/sample/Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..af43085dc4bf0fa3cac676a7f6451a563d127a8e GIT binary patch literal 3701 zcma)8`F9)D75+xHHO^!bE4E2u1H}o3*h+{jXQ5zPNDKy3g`}|vIDyd7=-HllJR@dC zu0!{IW$E5RS15$G6iAB|2 z;nvaxYt>pT=6bSkbm=6QZ(MUL+gr@v{t zu(skBW}ZAzqCt1GFndbFNb{@{w=CA88ArHPYG$K_Q+~i0vTmhJ7aDF!H!4{b;nKjY zL=QUQwa~M+>j;nbHT5jPp&$$O$Z-qONuWZs!ewbDuikc4<~ENr zQBgxr#06zGRG=H2#J;GVz0dKS=<^!7#>UU^`qO@uH|Z-mo_MUjQV~JfB5#r`-?rQ{ zR^Z5Wve_LiIV5tR6k01aR}^?RNx!SYG$gQNxz2Mm-#->d>xroF`03JATkNMr=+^^V z9Ity-S4_z$y6SyXQfr}H|Ig$oEt~lCIA?=ym1euf|&BcUVj6G!AQh5JlAgc%dlc#vJ8 zIC=NM3H~eU__c}O;J3`?;^d(t8gi;o)T@=30%29Tb=>!(Fbb^N2@x&%)vzy%-{mmV zr{iT4ui*C*`VS`lh#7`*U7?xy99S^}8?t`1D9!$4;(k0};?MYtiDR2+PMSC#E4`}Y zH4}fu>n7%;H-k+g$wwV;&`k&1ap9V{gg15k&BWjF59#wQ6aSRP11i+c#5M7@Jo-$F zg|ysdui0>)4(d);E~u6}BypHes%y?RYdr1}%E#up#-a>GBvX$ymUIO5EOSxdc#Euk z1MlEngCCd6>;ggE(=fhyBE^Ns4)00ttj}HTnAi4YN9hS8OZMuWsc2N_4ecdSt;@_C zN>Ex&S9R7$CC>0BXX-E}ztfBz*0wxbu%EHRo+Uy;U+0HKl>q5kY|=A078h=O$Allg zQRgErih!ZltRNJ8(@jX7Wg(2s%IHm-*&m5GhnUwjvL301RSqm$==hh3f1_dIahWiC zTfQ7`)n68clIoVM7;C|@BR{yPVe3k3rQ>~Gx8(cF^_qrH+aDtVh>PtJOLqEjG}cVM z1?_ndw{^ACVOYLc6Yc6Zei*y_|F-RfC&<&5>&`imn9}iqhC4P8l6IetO6!O)xi|JO zzYjt~0b7wl5tE!B;!mqAu_bQUyEg@oy;9+_Zz;+Cq$InOl59mv zvXfF8#AIXT_%K(;7>`ETm%oCZyta;RIb<&@gGV@SM;FI_bn|E27UVI@l^L7hQG9_b z4JDjN;N}S@^#}6rp{rkSpqG`2_ymV7)~lT12}~*swhu0 z>Wqr|O~oc~{zDk^`Kx3aS70`+!3K7=ly-5t zTPh8$W0(rN_FWN3$&GDoR(7-MAW0J)Q)%9kFY z`!jfg!HlWdlbkV_B>Z{Kx1#GA9cLfbajrYp%bPx(L_S4x8M&U{f0o($E~gn4gRC!^ zsM5#ISOw=*f>IgJutqcjeF;_qRG^d=J-lsKI!v7BJuwW8E2+kr8#A_1P4T?R1+Moj su#jS`-GFD(wWv5+!UW|o*Sjg@-;P+|Jr>V8h7fTr9oMO|iZ5gJe=)&diU0rr literal 0 HcmV?d00001 diff --git a/task1/target/classes/sample/Main.class b/task1/target/classes/sample/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..3b206b9d43e5d1e273b3fa5dc875248d9d30ef0f GIT binary patch literal 1168 zcmZuxTT|0O7(EMxv>{k1Q1OO<3WXw3!7GR&f|n`k05Up0EoCWT(xj85ia*Pj!sv|S zvp>r5Y*J{M;bkvhzVDp#o!!mfe?NZ%n8#ZaS==%)fyp!qCZ;fLqKFv-x6_z4VdIX0 zyCyQYr#EwYm^X0&_YFKS@KB(8(ea#UNuaYZwJnfZ@pqL#w&Zx~UA?-af-Sk@GLkF# zW$A9qz|s3=Fcs}Pp+Ijbl+~K6>~-mQ3j$qXB!fucVxe>(zskKsn}Le5H}$xnX{=h{ zRAulzjtC5%mq#&y?-OR|^lMpp%Kjh&JX4zkN^tEQRP!;%dZ z#uf>TC+B+B-~`80k^OO_M38(_uXf5_`?Ovv`EpkUw8Q111#(i+E+kP(kW;T(_lNpJ z6>T|@KB%Gdl<#F3~=m@gBc8RZ6yg9LY_NvVwhRFxQ-OzfXV3wI&z&2q>j<` z2i@z%oY6qK_zRiOGe + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/.DS_Store b/task2/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b1324d64e57423327744da7970478ca1841cc473 GIT binary patch literal 6148 zcmeHK%Wl&^6upy#bR2}p0;yfj28l(4@<4QfDp{c{x(BN3+ty7M9gdP2zu|Q6<9=dDric_Zk1PA z-!9Ke=EWq*Y}WT=lBGr2?fww8dgDfOOUjmP-D5H8v3B1x)ZhJh3uP{6bZ=-3R>HGv9 zlij3}Vvut}V=C7P65EJhq%p9$1-+p@h);iiIOmj#&wo^)%fbvW1I)nHFyJ>hdGl(9 z<58FaX5bnzVD<+EH5huV9NMh|jlBW@8*p2JZGIX}jq(_JtQ;Z&5v~;IN`=2-2v-ij z@_C`h%AqSK;V&P;KUw%2im*?|_{ye}2pw|E3@`)h4Afn>ZO;EEf4~2)7jcgnU + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/.idea/misc.xml b/task2/.idea/misc.xml new file mode 100644 index 0000000..d24ea8e --- /dev/null +++ b/task2/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/task2/.idea/workspace.xml b/task2/.idea/workspace.xml new file mode 100644 index 0000000..905c4df --- /dev/null +++ b/task2/.idea/workspace.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1593764704340 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/pom.xml b/task2/pom.xml new file mode 100644 index 0000000..ff51cec --- /dev/null +++ b/task2/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + org.example + task2 + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/task2/src/.DS_Store b/task2/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9ed6bbb5def37c61c0a5e72c47bb72f8d0ef00f8 GIT binary patch literal 6148 zcmeHK%}T>S5T0$LZYyFBf*x}bJoM07(Srz~)`K@8q6ZaCY|%i>N|Rc&R`MG920n^U z;N$4b?pmxrS5cXP*>84sW|RFk>}CK!G<)qjKm`CKDq*37%@;!Bq@Sci}f9p85^rA&CWE21DrOlvwK)szHI}feBt5iI)gK#hE^p7iZn<~kIDCu-{a@6i%$l-pJ zv{k>UdPzIg^Y~^!%91P{R~80?zl#t z@b2F1g}@J0%dEvWctB&cz$?F-#40&MAH_S6K?hREJ`nVXWA6#VE(1fT{)kE*XfP#oQoz QQ20kc)4&Zg@S_a80-SATs{jB1 literal 0 HcmV?d00001 diff --git a/task2/src/main/.DS_Store b/task2/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a0c8561992bc310b23a4b73c18e69de6120f6ed1 GIT binary patch literal 6148 zcmeHK%}(1u5S|4Cn^dSdRDz=~l{n;(A1IYjB`d&z8ULwKC^kt|rx zGEndw2dO%ZQx&7n6FPAWI0ojM0p7bFT~I_<6iw~l9gJ=K)S?$LiHnE%rQPRu@nxFi zMWb;q78bpwo?M7={_ea~?jk>?tels3d zf3N=^Cb^ztz%lS&F(ACXaIb?U*}L`8;`pxh sp(juljw=o76g2ia)&^h2>rgEi^Vt9f7E6QhK-`ajrolCifhT3)7rSV$VgLXD literal 0 HcmV?d00001 diff --git a/task2/src/main/java/Client.java b/task2/src/main/java/Client.java new file mode 100644 index 0000000..c94f3b8 --- /dev/null +++ b/task2/src/main/java/Client.java @@ -0,0 +1,28 @@ +import java.io.*; +import java.net.*; + +public class Client { + public static void main(String[] args) throws IOException { + System.out.println("Клиент стартовал"); + Socket server = null; + + if (args.length==0) { + System.out.println("Использование: java Client hostname"); + System.exit(-1); + } + + System.out.println("Соединяемся с сервером "+args[0]); + + server = new Socket(args[0],1234); + BufferedReader in = new BufferedReader( + new InputStreamReader(server.getInputStream())); + + + String fserver; + + while (true) { + fserver = in.readLine(); + System.out.println(fserver); + } + } +} \ No newline at end of file diff --git a/task2/src/main/java/Server.java b/task2/src/main/java/Server.java new file mode 100644 index 0000000..047ea01 --- /dev/null +++ b/task2/src/main/java/Server.java @@ -0,0 +1,29 @@ +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; + +public class Server { + static final int PORT = 1234; + + public static void main(String[] args) throws IOException { + ServerSocket s = new ServerSocket(PORT); + System.out.println("Мультипоточный сервер стартовал"); + try { + while (true) { + Socket socket = s.accept(); + try { + System.out.println("Новое соединение установлено"); + System.out.println("Данные клиента: "+ + socket.getInetAddress()); + new ServerOne(socket); + } + catch (IOException e) { + socket.close(); + } + } + } + finally { + s.close(); + } + } +} \ No newline at end of file diff --git a/task2/src/main/java/ServerOne.java b/task2/src/main/java/ServerOne.java new file mode 100644 index 0000000..745b98e --- /dev/null +++ b/task2/src/main/java/ServerOne.java @@ -0,0 +1,51 @@ +import java.io.*; +import java.net.*; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Date; +import java.util.List; +import java.util.Random; + +class ServerOne extends Thread { + private Socket socket; + private PrintWriter out; + private List lines=null; + + + public ServerOne(Socket s) throws IOException { + socket = s; + try { + URL resource = getClass().getResource("/wisdom.txt"); + this.lines = Files.readAllLines(Paths.get(resource.toURI())); + } catch (URISyntaxException e) { + e.printStackTrace(); + } + out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); + start(); + } + + public void run() { + try { + while (true) { + Date date = new Date(); + Random ran = new Random(date.getTime()); + int min = 0; + int max = lines.size()-1; + int diff = max - min; + int i = ran.nextInt(diff + 1) + min; + out.println(lines.get(i)); + out.println("\n"); + Thread.sleep(2000); + } + }catch (InterruptedException e) { + e.printStackTrace(); + } finally { + try { + socket.close(); + } + catch (IOException e) { + System.err.println("Сокет не закрыт"); + } + } + } +} \ No newline at end of file diff --git a/task2/src/main/resources/wisdom.txt b/task2/src/main/resources/wisdom.txt new file mode 100644 index 0000000..17b9ab2 --- /dev/null +++ b/task2/src/main/resources/wisdom.txt @@ -0,0 +1,164 @@ +Бог - это специальная программа, установленная в душах верующих, а Дьявол - просто вирус в ней. (Сергей Федин) АФОРИЗМ БОГИ РЕЛИГИЯ +Компьютерная игра настолько же хорошо заменяет игру вдвоем, насколько резиновая женщина настоящую. (Сергей Федин) АФОРИЗМ ЖЕНЩИНА ИГРА +Моя любимая порода собак - @. (Сергей Федин) АФОРИЗМ ЖИВОТНЫЕ РАЗНОЕ +Моя родина там, где мой компьютер. (Сергей Федин) +Моя любимая порода собак - @. (Сергей Федин) +Если на улице уже, кажись, закат, значит это восход. (GreeveX) +Настоящий программист всегда выберет путь через 10 граблей, максимально обходя их, 20 рисков, максимально задумываясь о методе реализации(а не о том, что будет если риск не оправдается), нежели согласится выбрать путь саморазрушения и остановке развития через принятие идеи программерски не уважающего себя человека. (GreeveX) +Инженер как врач общается с телом, программист как священник - с душой компьютера, а системный администратор как медсестра - поддерживает стабильное состояние. (Fobos (new_russian_man)) +Пока компьютер еще не научился самостоятельно мыслить, доверять ему можно. (Илья Герчиков) МЫСЛЬ РАЗУМ +Компьютер позволяет решать все те проблемы, которые до появления компьютера не существовали. (Неизвестный автор) +Программист - это не человек, это просто новая форма жизни. (Неизвестный автор) +Если муху с монитора ты сгоняешь мишкой, значит, тебе пора идти домой. (Неизвестный автор) +Трудное детство: Килобайтные игрушки. (Неизвестный автор) +Если мысли не помещаются в голове, заархивируйте их. (Неизвестный автор) +Если ваш компьютер завис: выдерните шнур, выдавите стекло. (Неизвестный автор) +Самый страшный вирус всегда сидит перед компьютером. (Неизвестный автор) +Бог придумал устройство, а сатана - драйвера. (Неизвестный автор) +Прежде чем удалить файл, убедись, что он не твой. (Неизвестный автор) +Если программист в 9-00 утра на работе, значит, он там и ночевал. (Неизвестный автор) +Клавиатуру топтать - это вам не джойстиком баловаться. (Неизвестный автор) +Бог смог сотворить мир всего за 6 дней только потому, что ему не надо решать проблемы совместимости с предыдущими версиями. (Неизвестный автор) +Умный программист всегда сможет занять компьютер дурной работой. (Неизвестный автор) +Ничего так не украшает женщину, как Фотошоп. (Неизвестный автор) +Компьютерщик - это или диагноз, или ориентация. (Неизвестный автор) +Первая заповедь программиста: не знаешь, что делать, делай что-нибудь. (Неизвестный автор) +Умные пользуются компьютером, чтобы сберечь время, а дурные, чтобы его потратить. (Неизвестный автор) +Он разогнал гостей, потом разогнал процессор. (Неизвестный автор) +Вышедшая новая операционная система не требует наличия у вас компьютера. (Неизвестный автор) +Возвращается муж неожиданно из Интернета: (Неизвестный автор) +Если ваша программа работает медленно, значит, вы опередили время. +Господи, не введи в искушение и избавь от Глюкавого. (Неизвестный автор) +Кулер - тоже вертолет, но маленький. (Неизвестный автор) +Жизнь - игра. Задумано плохо, но графика потрясающая. (Неизвестный автор) +Ваши руки ввели идиотскую команду и будут ампутированы. (Неизвестный автор) +Программы без ошибок можно написать двумя способами, но работает - третий. (Алан.Дж.Перлис) +Подумайте, сколько психических сил потрачено на поиски коренного различия между "алгоритмом" и "программой". (Алан.Дж.Перлис) +Когда изучаешь какой-либо вопрос, считаешь, что знаешь его; когда можешь писать о нем, становишься уверенней в своих знаниях; уверенность возрастает, когда можешь научить этому кого-нибудь другого; и совершенно уверен, когда начинаешь программировать. (Алан.Дж.Перлис) +Благодаря своей жизненности программирование всегда испытывает отчаянную потребность в новых штампах: Банальность успокаивает нервы. (Алан.Дж.Перлис) +Обучение детей программированию противоречит современной теории обучения. Разве интересно составлять планы, овладевать дисциплиной в организациии мышления, уделять внимание деталям и учиться быть самокритичным? (Алан.Дж.Перлис) +Нельзя научиться программированию с помощью ручного калькулятора, но можно забыть арифметику. (Алан.Дж.Перлис) +В хорошей системе не может быть слабого языка команд. (Алан.Дж.Перлис) +В программировании средняя наработка на отказ постоянно уменьшается. (Алан.Дж.Перлис) +Мы вот-вот сможем сказать: "Сегодня наша программа доказала теорему ферма". (Алан.Дж.Перлис) +Там, где есть модульность, возможно непонимание: Сокрытие информации предполагает необходимость проверки связи. (Алан.Дж.Перлис) +Отказ от языка ассемблера был яблоком раздора в наших садах эдема: Языки, использование которых приводит к растранжированию машинного времени, греховны. Лиспмашина сегодня позволяет своим программистам отказаться от фигового листка. (Алан.Дж.Перлис) +Машины скорее обнаруживают наличие беспорядка, чем наводят порядок. (Алан.Дж.Перлис) +Если мы верим в структуры данных, мы должны верить и в независимую (и потому одновременную) обработку. Зачем же еще собирать элементы в структуру? Почему мы терпим языки, которые дают нам одно, но не дают другое? (Алан.Дж.Перлис) +Простота только мешает поиску недостижимого. Если существуют афоризмы, должны быть и метаафоризмы. (Алан.Дж.Перлис) +Как только вы поняли, как писать программу, заставьте сделать это кого-нибудь другого. (Алан.Дж.Перлис) +Если в вашей процедуре 10 параметров, вероятно, какой-нибудь пропущен. (Алан.Дж.Перлис) +Афоризмы - это интерфейсы, по которым передается оценка и понимание. (Алан.Дж.Перлис) +Для машин естественные языки не естественны. (Алан.Дж.Перлис) +Лучше, чтобы в 100 функциях использовалась одна структура данных, чем в 10 функциях - 10 структур. (Алан.Дж.Перлис) +Веками индейцы создавали язык знаков, чтобы сообщить друг другу самое интересное. Программисты из разных племен (фортрана, лиспа, алгола, снобола и т.Д.) Могли бы воспользоваться таким языком, который понятен и без классной доски. (Алан.Дж.Перлис) +Не имейте хороших идей, если не хотите отвечать за них. (Алан.Дж.Перлис) +Для дилетанта лучшим пособием по программированию служит "алиса в стране чудес" - только потому, что для него это лучшее пособие по любому предмету. (Алан.Дж.Перлис) +Структурированное программирование потверждает закон исключенного третьего. (Алан.Дж.Перлис) +Все нужно проектировать сверху вниз, за исключением фундамента, с которого нужно начинать. (Алан.Дж.Перлис) +Каждая программа является частью другой программы и редко соответствует ей. (Алан.Дж.Перлис) +Самая важная машина та, что "бушует" у нас в голове и все время ищет нужный ей внешний эмулятор. Стандартизация существующих машин была бы катастрофой, и потому она, вероятно, не произойдет. +Афоризмы кристаллизуют несоответствия. (Алан.Дж.Перлис) +Чтобы понять программу, необходимо отождествить себя и с машиной, и с программой. (Алан.Дж.Перлис) +Когда кто-то говорит: "Мне нужен язык программирования, в котором достаточно только сказать, что мне нужно сделать", - дайте ему леденец. (Алан.Дж.Перлис) +В английском языке любое слово может быть глаголом. Разве могло бы такое быть в языках программирования? (Алан.Дж.Перлис) +Доказательство ценности системы - в ее существовании. (Алан.Дж.Перлис) +Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые моугт избегать ее. Гении ее устраняют. (Алан.Дж.Перлис) +Когда мы поймем машинные системы баз знаний, все будет, как и прежде, с той лишь разницей, что кончики пальцев будут обожжены. (Алан.Дж.Перлис) +Нельзя перейти от неформального к формальному с помощью формальных средств. (Алан.Дж.Перлис) +Программирование заставило дерево зацвести. (Алан.Дж.Перлис) +Появление эвм в домах не изменит ни один из них, но может возродить салуны. (Алан.Дж.Перлис) +Остерегайтесь бочки меда с ложкой дегтя тьюринга, где все возможно, но все интересное слишком сложно. (Алан.Дж.Перлис) +Трудно выделить смысл из строк, но это единственная "монета" связи, на которую мы можем рассчитывать. (Алан.Дж.Перлис) +Иногда мне кажется, что единственным универсумом в программировании является цикл. (Алан.Дж.Перлис) +Некоторые языки программирования допускают изменения, но сопротивляются прогрессу. (Алан.Дж.Перлис) +Легко сделать что-то переменным. Хитрость в том, чтобы измерять продолжительность постоянства. (Алан.Дж.Перлис) +Афоризмы возвращают глубокое семантической значение из базы данных, которая представляет собой процедуру. (Алан.Дж.Перлис) +Работу программистов следует оценивать не по их изобретательности и логике, а по полноте анализа каждой ситуации. (Алан.Дж.Перлис) +Легче изменить спецификацию, чтобы она соответствовала программе, но не наоборот. (Алан.Дж.Перлис) +Синтаксический сахар вызывает рак точек с запятой. (Алан.Дж.Перлис) +Часто средства оправдывают цели: Цели порождают метод, а метод выживает, даже когда разрушаются структуры, бывшие ранее целью. (Алан.Дж.Перлис) +Через пять лет у нас будет один суперязык программирования, только мы не можем установить начало этого пятилетнего периода. (Алан.Дж.Перлис) +Продолжительный контакт с машиной превращает математиков в клерков, и наоборот. (Алан.Дж.Перлис) +Все, что мы делаем в программировании - это частный случай чего-то более общего, и зачастую мы осознаем это чересчур быстро. (Алан.Дж.Перлис) +Софтвер находится в постоянном напряжении. Поскольку он символичен, его можно постоянно совершенствовать, но и произвольно изменять. (Алан.Дж.Перлис) +Афоризмы скорее подобны витаминам, чем белку. (Алан.Дж.Перлис) +Функции задерживают связь, структуры данных стимулируют связь. Мораль: Структурируйте данные как можно позднее в процессе программирования. (Алан.Дж.Перлис) +Единственная конструктивная теория, связывающая неврологию и психологию, возникает из исследований софтвера. (Алан.Дж.Перлис) +Если при объяснении вашей программы слушатель начинает кивать головой, его пора будить. (Алан.Дж.Перлис) +Программирование - это неестественный процесс. (Алан.Дж.Перлис) +Когда мы пишем программы, которые "обучают", мы - обучаем, а они - нет. +Афоризмы кристаллизуют несоответствия. (Алан.Дж.Перлис) +Чтобы понять программу, необходимо отождествить себя и с машиной, и с программой. (Алан.Дж.Перлис) +Когда кто-то говорит: "Мне нужен язык программирования, в котором достаточно только сказать, что мне нужно сделать", - дайте ему леденец. (Алан.Дж.Перлис) +В английском языке любое слово может быть глаголом. Разве могло бы такое быть в языках программирования? (Алан.Дж.Перлис) +Доказательство ценности системы - в ее существовании. (Алан.Дж.Перлис) +Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые моугт избегать ее. Гении ее устраняют. (Алан.Дж.Перлис) +Когда мы поймем машинные системы баз знаний, все будет, как и прежде, с той лишь разницей, что кончики пальцев будут обожжены. (Алан.Дж.Перлис) +Нельзя перейти от неформального к формальному с помощью формальных средств. (Алан.Дж.Перлис) +Программирование заставило дерево зацвести. (Алан.Дж.Перлис) +Появление эвм в домах не изменит ни один из них, но может возродить салуны. (Алан.Дж.Перлис) +Остерегайтесь бочки меда с ложкой дегтя тьюринга, где все возможно, но все интересное слишком сложно. (Алан.Дж.Перлис) +Трудно выделить смысл из строк, но это единственная "монета" связи, на которую мы можем рассчитывать. (Алан.Дж.Перлис) +Иногда мне кажется, что единственным универсумом в программировании является цикл. (Алан.Дж.Перлис) +Некоторые языки программирования допускают изменения, но сопротивляются прогрессу. (Алан.Дж.Перлис) +Легко сделать что-то переменным. Хитрость в том, чтобы измерять продолжительность постоянства. (Алан.Дж.Перлис) +Афоризмы возвращают глубокое семантической значение из базы данных, которая представляет собой процедуру. (Алан.Дж.Перлис) +Работу программистов следует оценивать не по их изобретательности и логике, а по полноте анализа каждой ситуации. (Алан.Дж.Перлис) +Легче изменить спецификацию, чтобы она соответствовала программе, но не наоборот. (Алан.Дж.Перлис) +Синтаксический сахар вызывает рак точек с запятой. (Алан.Дж.Перлис) +Часто средства оправдывают цели: Цели порождают метод, а метод выживает, даже когда разрушаются структуры, бывшие ранее целью. (Алан.Дж.Перлис) +Через пять лет у нас будет один суперязык программирования, только мы не можем установить начало этого пятилетнего периода. (Алан.Дж.Перлис) +Продолжительный контакт с машиной превращает математиков в клерков, и наоборот. (Алан.Дж.Перлис) +Все, что мы делаем в программировании - это частный случай чего-то более общего, и зачастую мы осознаем это чересчур быстро. (Алан.Дж.Перлис) +Софтвер находится в постоянном напряжении. Поскольку он символичен, его можно постоянно совершенствовать, но и произвольно изменять. (Алан.Дж.Перлис) +Афоризмы скорее подобны витаминам, чем белку. (Алан.Дж.Перлис) +Функции задерживают связь, структуры данных стимулируют связь. Мораль: Структурируйте данные как можно позднее в процессе программирования. (Алан.Дж.Перлис) +Единственная конструктивная теория, связывающая неврологию и психологию, возникает из исследований софтвера. (Алан.Дж.Перлис) +Если при объяснении вашей программы слушатель начинает кивать головой, его пора будить. (Алан.Дж.Перлис) +Программирование - это неестественный процесс. (Алан.Дж.Перлис) +Когда мы пишем программы, которые "обучают", мы - обучаем, а они - нет. +В программных системах зачастую "кто рано встает, того удача ждет". (Алан.Дж.Перлис) +Рекурсия - основа программирования, поскольку она сокращает время написания программы. (Алан.Дж.Перлис) +Если бы мы писали программы с детства, то с годами, возможно, научились бы их читать. (Алан.Дж.Перлис) +Перспективность программиста можно оценить, узнав его мнение о жизнеспособности фортрана. (Алан.Дж.Перлис) +Для систем аналогом пластической операции является введение в управляюший граф ребра, которое создает цикл, а не просто еще одну вершину. (Алан.Дж.Перлис) +Эвм напоминает Лона Чени - это машина с тысячью лиц. +Лон Чени написал детектив "человек с тысячью лиц". (Алан.Дж.Перлис) +Редактирование - это выражение того же, но другими словами. (Алан.Дж.Перлис) +Афоризмы пропускют подробности и выделяют главное: Это превосходная документация высокого уровня. (Алан.Дж.Перлис) +Никогда не кончатся объекты программирования, пока у нас под рукой есть хотя бы одна программа. (Алан.Дж.Перлис) +Одиннадцатая заповедь гласит: "Вычисляй" или "не вычисляй" - я уже не помню. (Алан.Дж.Перлис) +У каждой программы (по крайней мере) два назначения: Что она должна делать и чего не должна. (Алан.Дж.Перлис) +Возможно ли, что программное обеспечение не похоже ни на что другое; что оно создано для того, чтобы от него отказались со временем; что все дело в том, чтобы оно всегда оставалось для нас мыльным пузырем? (Алан.Дж.Перлис) +Как сказал бы уилл роджерс: "В природе нет такой вещи, как свободная переменная". (Алан.Дж.Перлис) +Афоризмы - это макросы, поскольку они выполняются в ходе чтения. (Алан.Дж.Перлис) +Если вы можете представить себе общество, где лакеями будут роботы, вы можете представить все, что угодно. (Алан.Дж.Перлис) +Афоризмы параметризуют нимбы святости. (Алан.Дж.Перлис) +Почему распалась римская империя? Как по-латыни автоматизация конторских работ? (Алан.Дж.Перлис) +Не стоит изучать язык, который не меняет вашего представления о программировании. (Алан.Дж.Перлис) +Не путайте: Машины обрабатывают числа, а не символы. Мы измеряем свое понимание (и контроль) степенью арифметизации деятельности. (Алан.Дж.Перлис) +Язык программирования имеет низкий уровень, если в программах приходится уделять внимание несущественному. (Алан.Дж.Перлис) +Хотя китайцы должны были бы обожать арL, они вкладывают деньги в фортран. (Алан.Дж.Перлис) +Адекватная самораскрутка - явное противоречие. (Алан.Дж.Перлис) +Адаптировать старые программы к новым машинам обычно означает заставить новые машины работать по-старому. (Алан.Дж.Перлис) +Мы всегда хотим сказать в своих программах что-то такое, что на всех известных языках можно сказать только плохо. (Алан.Дж.Перлис) +Подумать только! С помощью сверхбольших интегральных схем мы можем упаковать 100 "эниаков" в 1 кв.См. (Алан.Дж.Перлис) +Реальная графика: Для описания картинки необходимо 10к слов. Но едва ли можно описать какое-либо множество из 10к слов с помощью картинок. (Алан.Дж.Перлис) +Года работы над искусственным интеллектом достаточно, чтобы заставить поверить в бога. (Алан.Дж.Перлис) +В конечном счете каждая программа устаревает, как и рококо, а потом и вовсе умирает. (Алан.Дж.Перлис) +Лисп-программисту известна ценность всего, но неизвестна цена чего бы то ни было. (Алан.Дж.Перлис) +Чисто прикладные языки плохо применимы. (Игра слов аррLIсатIVе и аррLIсавLе). (Алан.Дж.Перлис) +Не слабости, а достоинтсва языка определяют направления его изменений. Увы, язык никогда не сможет избавиться от своего эмбрионального мешка. (Алан.Дж.Перлис) +В программировании превращение очевидного в полезное - это точное определение слова "разочарование". (Алан.Дж.Перлис) +Документация подобна страхованию на неопределенный срок: Она удовлетворяет всех, поскольку почти никто из подписавшихся на нее не зависит от ее преимуществ. (Алан.Дж.Перлис) +Ваять можно научить каждого, но тогда пришлось бы учить микеланджело, как не делать этого. То же самое - с великими программистами. (Алан.Дж.Перлис) +Не стоит писать программу без цикла и структурированной переменной. (Алан.Дж.Перлис) +Всякий раз, когда два программиста встречаются для критического анализа своих программ, они оба молчат. (Алан.Дж.Перлис) +Так много хороших идей исчезает бесследно, попав в пучину семантики. (Алан.Дж.Перлис) +Использование программы для доказательства теоремы о четырех красках не изменит математики. Оно просто покажет, что задача, которая оставалась нерешенной в течении столетия, возможно, не так уж важна для математики. (Алан.Дж.Перлис) +Если ваша машина говорит по-английски, ее, вероятно, сделали в японии. (Алан.Дж.Перлис) +Машина не виновата в том, что уравнения максвелла не подходят для проектирования электромотора. (Алан.Дж.Перлис) +В программировании, как и везде, ошибаться - значит рождаться заново. (Алан.Дж.Перлис) +Кибернетический обмен между человеком, машиной и алгоритмом подобен игре в "музыкальные стулья": Неистовый поиск равновесия всегда оставляет одного из трех неловко стоять. (Алан.Дж.Перлис) +В программировании инварианты эфемерны. (Алан.Дж.Перлис) \ No newline at end of file diff --git a/task2/target/classes/Client.class b/task2/target/classes/Client.class new file mode 100644 index 0000000000000000000000000000000000000000..ec6aba878c0fa10f2541f111e05df706bc4fc6e6 GIT binary patch literal 1712 zcmaJ?O;;0F7=CUDOc){`K?G~7u|*pYiM1cLV!ueGLIYSsvD9vc#AGpDc~_e_gzi8@4x8M)AqTU0P%#=oaD}Zzn=TP@AJ;hAOF1A18@aDn&?BS z6C)Un;ev@VT#RAdq?}IB;e7)in26y+10NZQ45qwPB@;mb049DbIFRC+hf?x5|kABh1Xjm)?f-1p2~YN2+wr&96(19MQN# zp}}_3la-Yf>B+(^X%(bLyRot#ooGE;;8;#s`Sn?=+(_NLelIV}%61*!0LwRXZpF*X zDO(rY71lGZONb+ZegmJ!@ddsVI1@Yxs=@PME7+|)Ox7OM9tKZq_qpx`&w{5x)xcyN z8GI#hDR^9a5d2O0}G)Ca$zG2!aR}`s`Rw-;+99hij@HxHA$8i(i zl7uiT=1~u<6F9$oSLPLIJHVPhXy0p&xlLcm5{JpH(0$;5t(zQx#@VFm0H#Sz0?XQ| zNR|gutqj(ON8Ymu8%<4*ESk85oWNM{GaI`V{KmHK)*f;9lAJsuG5iKwwfkg6uY1AE zq!1V^S?e<6I(bXow$&PUzOo#}i9CPQnXPH)(Qef;AA#;wshWDs!%`y$4QMj30YeQ8 z($#FxDE)_~#%OD8jI0&(J1KB{AGP__GO(b><9mVOL)L6(!(Eq+w=XPu%E~L(+cfY4 ziO#z2dZjE7pLQJSWr~*XOLpRMbAb(va1w7=PN69M;V^KbwGU02*8&$d%kl{K=1U+P zv57{<>a{f>GFGvevz6qPbw}V_OMOS>CUE-y{csk&yh8OS0^V-u=X#t{noq%J`{)kD zuXXbP*N(a}iWA(&LkA3Eh*Bp`;thi6;J?t0D4$Eu5J|LcBPz0^dr#1##deC3=jh;m zwC(Z>7yva@#Fi-bMgQDEXSND+sfwVbpGYvzX{$3ozOV1 zbDdUFhOi?F38YV}dHz}FazlGB*W`@yckYo|_ z)SkuLJmVdDbR+T#rwqhiVO*awOkI@z=V(9AeFX2~b{$FJJ1k+5=Uk#3qtAQ%UH%V1 CHrx;Z literal 0 HcmV?d00001 diff --git a/task2/target/classes/Server.class b/task2/target/classes/Server.class new file mode 100644 index 0000000000000000000000000000000000000000..81fabcc5cca94ab0bbf63a2a362486a3e4997d43 GIT binary patch literal 1769 zcmaJ?%U2s!9R4mDGGQ3rrL=zEO17y^@@;RkzJiLl;#KCQhPb_&SG%PmXu22d>ByV- z03VttU{c^x@Jr}92)0xvMerLz_bK-&X}ld_P*n(fq2s{B6s85*$6VL1`kqypl>Uml zRBcOQCWVhoTt`u$DJp;3k*WhSr7P_7$>o^%SdF0lXr^~Vs3n^j+~k$3JoagI1KL$3H_jI`Fc_QPsoW&ypTg32UXclvmqC9RSo z76H=zF=9MsQ|q$y^W5d=(vl~u-2SO}Sj>|(Fo$`8v%wv1WFW{bZ~y=R literal 0 HcmV?d00001 diff --git a/task2/target/classes/ServerOne.class b/task2/target/classes/ServerOne.class new file mode 100644 index 0000000000000000000000000000000000000000..6d03c7d3f628ff06ee2b38f5806f50acd869a01a GIT binary patch literal 2649 zcmZ`*>su6M6#oso@Gipu3M_((k|@GLtXWZsnHRLsMT|uawQ|@UU}V{)*;#?Eq}k0Z z?Ot}X8`Y=miACkf`rN1GkLYjcTl9Npc9+GTcAtIc%o$M~@RN!* zgi8^?fLxBMIELdsJfUI`CsdroDHTuRDHTuSw1BQc#gITmASz&}*n?pe6&O)bj!_jF zOsVCJ%4JL-roxY~z_@(IRjfgx3=?=pQkJBW0=C?h^5JYT{ozMsq(_qiQ!1J;Buz{U zJX?zA@VpN%sCW@6ftLhk6qFvqaA6l}hOz0-Y<>G6?Z*rvvju3g+x zveS&4_AUiAEv`U;C#}a6c=siu)K(dy(Zi|nA;TKbhhjvkLWzhTJEmKve9wYD%Sa|t zR)qYDWpzjUL$st2Y$ybK!qahEpV~haF(zy?5vPpT9yNKivQXHt&Kg!<+>jfIl!t9S zGS;h4IEDmXR-ooLlJBunajq?n%Te8?t-|17bzV?k6 z_P&^&WYt!;v=-Es1G1Q0-Oiq@Tp73Y=R0dtwo@I6Y%6E=NQc~R)AA1TokPP;ur_#< zoJCi%hvwYUh_g0^S);)tx;-iziY7Tk3Wfsrcje3!3jbGytaYl;WT^JUVsdowwK=D2 z#pbNW!YNicA?Kab@B@}EXGtZUDXc^Vb-8m;Ss{nc)MxG7$&sU>dYPAMP400Vumq6ev=TS9>YAUF?PD>SN zMl0`X53hL8qcX0Q@baoH#VT^EP={*D)KaR3XYf;I4f=?NQI7{H9iVg_B_F~L`YhkN zu#*&h#>3dfr=%X?nHB6NU5%n8Dk~BQ2;SL>fa=9wGQ1RM=5HUmx$^MJBC%3(t}MVm zIFH)U0@e(+rBOGJ`d-g2o~!64*2>$X)9d#(L_3Sy{l(tXX{>8F-C06*wG{D}+{F4K z{DFovHb}5)BZ(R`-oU2WrP&Y_ZYInSZJ9+&=of6QYDuGY7VCG2JYK%Tmt)k6->*ad z2|2}Y6LgGXjE;lUB-d%o;5^?aNy&FNvO|m!uz}g!$T&7Ko_BHYCI+I3x!#O}*usc5 z^Uu^)YHi_PsaEQ1r|xak-hmiv#b%vMvWljO&k#RP`~vYy#4odcWHyGGOCKJ`ejH#B zYxsN=k1-py3~LXqcxbN^he&y8VH-lEiX9JnNtMv9%-><|jZse*Gp*2uOZlk(N;apv rNpFY1-#97IbXcJIkid~8){l>gC6gZlGQG{EOLTyQgcbTGYrp?r + \ No newline at end of file diff --git a/task3/.DS_Store b/task3/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ac418a33d7e697c5b5edde7ab17cc706b1990e3f GIT binary patch literal 6148 zcmeHK!EO^V5FICJ>rGWP2c-7s3lfJ2B~8^HDx_5?hu)AD!2wXa+eGcE+jW%P5FiBY zZ@?e$DSQE+18;0Mv`V=~74k^qHy+Q}^0U`o6Orgo23?{S5lJXxEkJRPa69Xg)SPDx zC`=z8>6)^WOrIy&QnYtGL{nW6 z3p-9;r^D%K>(O(amvNd8$0j))3=#6~O_~q%w67=mpfLSJwn5532B)pv+3a9%udRBW z?!2vLhlicE+V36A=YiaL+Y!fj^MJbK?L2 literal 0 HcmV?d00001 diff --git a/task3/.idea/compiler.xml b/task3/.idea/compiler.xml new file mode 100644 index 0000000..28e243d --- /dev/null +++ b/task3/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/task3/.idea/misc.xml b/task3/.idea/misc.xml new file mode 100644 index 0000000..d24ea8e --- /dev/null +++ b/task3/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/task3/.idea/workspace.xml b/task3/.idea/workspace.xml new file mode 100644 index 0000000..e5ff7f4 --- /dev/null +++ b/task3/.idea/workspace.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1593841832048 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task3/pom.xml b/task3/pom.xml new file mode 100644 index 0000000..a6435cf --- /dev/null +++ b/task3/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + org.example + task3 + 1.0-SNAPSHOT + + + org.json + json + 20180130 + + + org.decimal4j + decimal4j + 1.0.3 + + + commons-io + commons-io + 2.6 + + + junit + junit + 4.13 + test + + + + \ No newline at end of file diff --git a/task3/src/.DS_Store b/task3/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3e7c033411d4dbd0d38dba6cdeee4d251e28845a GIT binary patch literal 6148 zcmeHK!AiqG5S^`2w-vDmL65lz9(rh1>Oq81_25m2=s~3>wrC*DN|Rc&R`MJA2Y!lQ z;OFSf?poC9Ra9nR_RY@DY_e~|ZUz8Eqt~hdlmS4Z5*CWsd?7SWIwl3{aS#Q~u^X$i zFjgVq$Q`1tG zWNEf^;$Nt~p9NVjZ3NvT>g@&DMQH7PrQ(qtga=W(-z?8>sU!=cq}|oYQLBw1$A?kU zQvHVNC9PD?%(DDE-ckHcTYRlH-p>Z z-M!fhfgh@tIg4-bfW~NnSAI8%RdS9#igzG`Hl&b!BIpsv-V=mf7G{7MUXE8U39u#3x5lyPF zC5Et-gD~kh?%DXWb7 P3jYXb8n|Hwew2Y%+!AK4 literal 0 HcmV?d00001 diff --git a/task3/src/main/.DS_Store b/task3/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e891ffeea8e3a471c75e3c0ca4781243bf950470 GIT binary patch literal 6148 zcmeHK%}(1u5S|TbyG~U#2c&ZJrBV+$Bv8Sjs$`{b;8w|q9@+|Q5*1gj7sU<{q(OcS zc!NF)Pr&1}-|TLq@^^)(nvrI|+1Z)3_gib%Lqw`S9`uOXM5LjNjR4IZ!sD#Bq~SeH zpyD~Ub90d9CPkko6j^)*c<-9@of0~x^qJNz-Fngb8XuZTTqV`G>?fno-20eRhpD%BjLGMAlI~{1$zFT;gDI*cD~2PR zoDGHu`SK|%24>PX<6=!I60mEoSmJ!y-@g2t-SR37cOAT7kC_xirf_6;N$p!Ml__742@wOuziE7Ux@mb zDs)AJ0bxKGSX>7DQK+9U?kmch2?N5wBQe0|LkMMzJk}2F(SgR606_kYv;y1y`U69D z03(mJLwF#{r2<{5@+F4ym4kBW7>|5>?a-x@vQNf5{>jQ$D9RTeDzxFGB8Son1H!;{ z29{j6&G-M-{q_I#BtV6$9HWA-G{PpTfU#h~=wz b1!@KUkPTquv33X#M1BM;4blh$56ZwF-PLHt literal 0 HcmV?d00001 diff --git a/task3/src/main/java/Client.java b/task3/src/main/java/Client.java new file mode 100644 index 0000000..1669e42 --- /dev/null +++ b/task3/src/main/java/Client.java @@ -0,0 +1,28 @@ +import java.io.*; +import java.net.*; + +public class Client { + public static void main(String[] args) throws IOException { + System.out.println("Клиент стартовал"); + Socket server = null; + + if (args.length==0) { + System.out.println("Использование: java Client hostname"); + System.exit(-1); + } + + System.out.println("Соединяемся с сервером "+args[0]); + + server = new Socket(args[0],1235); + BufferedReader in = new BufferedReader( + new InputStreamReader(server.getInputStream())); + + + String fserver; + + while (true) { + fserver = in.readLine(); + System.out.println(fserver); + } + } +} \ No newline at end of file diff --git a/task3/src/main/java/Server.java b/task3/src/main/java/Server.java new file mode 100644 index 0000000..6d002ab --- /dev/null +++ b/task3/src/main/java/Server.java @@ -0,0 +1,68 @@ +import com.sun.tools.javac.Main; +import org.apache.commons.io.IOUtils; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; +import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.util.*; + +public class Server { + static final int PORT = 1235; + static Map Client = new HashMap<>(); + + + public static void main(String[] args) throws IOException { + ServerSocket s = new ServerSocket(PORT); + System.out.println("Мультипоточный сервер стартовал"); + + + new Thread(()->{ + while (true){ + try { + InputStream resource = Main.class.getClassLoader().getResourceAsStream("massage.json"); + String content = IOUtils.toString(resource, StandardCharsets.UTF_8); + JSONArray clients = new JSONArray(content); + for (int j = 0; j < clients.length(); j++) { + JSONObject client = clients.getJSONObject(j); + if (!Client.containsKey(client.getInt("id"))) + break; + Socket sok = Client.get(client.getInt("id")); + PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sok.getOutputStream())), true); + JSONArray massages = client.getJSONArray("notes"); + for (int k = 0; k < massages.length(); k++) { + JSONObject massage = massages.getJSONObject(k); + String time = new SimpleDateFormat("HH:mm").format(Calendar.getInstance().getTime()); + if (massage.getString("time").equals(time)){ + out.println(massage.getString("note")); + } + try { + Thread.sleep(60000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + }).start(); + + int i = 1; + try { + while (true) { + Socket socket = s.accept(); + Client.put(i++,socket); + System.out.println("Новое соединение установлено"); + System.out.println("Данные клиента: "+ socket.getInetAddress()); + } + } + finally { + s.close(); + } + } +} \ No newline at end of file diff --git a/task3/src/main/resources/massage.json b/task3/src/main/resources/massage.json new file mode 100644 index 0000000..923cf4c --- /dev/null +++ b/task3/src/main/resources/massage.json @@ -0,0 +1,36 @@ +[ + { + "id": 1, + "notes": [ + { + "time": "11:29", + "note": "Hello" + }, + { + "time": "11:30", + "note": "Hello" + }, + { + "time": "11:32", + "note": "Hello" + } + ] + }, + { + "id": 2, + "notes": [ + { + "time": "11:30", + "note": "Hello2" + }, + { + "time": "11:31", + "note": "Hello2" + }, + { + "time": "11:33", + "note": "Hello2" + } + ] + } +] \ No newline at end of file diff --git a/task3/target/classes/Client.class b/task3/target/classes/Client.class new file mode 100644 index 0000000000000000000000000000000000000000..e8714d1c1d3f8d1902df2eddc6a3dafc97a8f391 GIT binary patch literal 1712 zcmaJ?T~iZR7=BI&Y*->6K?G~7u|*pYiM1cLV!ueGLIYSsvDDry$pKc9-OTO@BX{a` zXS{X1>s4>9Q@}Ao?|ZeGUiV-0(rNpgY=Agnnn}){_v<@*Kf=sheCcgSPoOUhcBD$@-2A%K$PtY@ z6dG(dJy}^Pk?(TUch1&-yEm0zE=%8k^`>-X}qtZdiu4X}JO=T^MD zoU(PXU12@rx`a3q=r{0r9ADr|fiuCApc*_6wu0T-!({D2?P2h=cAx8B@GN*5R1HkV zk-=92mx9N&2f^<&RBJy4I}L|j9eXvYk(1#m$u-wkj#ZLzT*s6^@1*N0UwKw}R;o3( z;P-Uk>lkjtF^w5gQ}63xYjl3!u;X=gOJf91?i;3^az&8}X_dmJ#gWCV4xiJ@d>l9N zElCKoVjlItI)U@ccV%9YwgasBgZ91VnA`M~EOD6J3f%_|*t*F9Xq-)|4q%$pB(SWV ziez~p)yiOfc;r2su+h}?$fAi`$O()EKeMr0!EbEqZtW3wFUiRx62ot>Rl84C^tu@~u9LUaZCkBz=PS!moXGP>o!Od(9_>~w^AYG?m8z-7JS;VG(10cb8!*(s zAYIJ{jnaQ;YK*ql#>iShzmo#T_feZ)EdvXBJiZqgK4i^yHr#dDc>BVlr>wkky-fo@ zkm#)Iu2;$e@oC4AUZ!aIzGNpJHy7Bz2q*D|rbff*(_&lGjyqhWINd6SY!{aZNAVrCe921yn% zPwiQ}%`@JiM>is`aLPdJ6~^@`!_-CTe~$L^+(+;(Zr70nzQYn0dCn!uG5Wm6-{t=R DK?~dw literal 0 HcmV?d00001 diff --git a/task3/target/classes/META-INF/task3.kotlin_module b/task3/target/classes/META-INF/task3.kotlin_module new file mode 100644 index 0000000000000000000000000000000000000000..a49347afef10a9b5f95305e1058ba36adec7d6dd GIT binary patch literal 16 RcmZQzU|?ooU|@t|0RRA102TlM literal 0 HcmV?d00001 diff --git a/task3/target/classes/Server.class b/task3/target/classes/Server.class new file mode 100644 index 0000000000000000000000000000000000000000..628ede88c2ec746f74595f4ed65e55f690a270a2 GIT binary patch literal 4892 zcmcIodwd*K75?t-W@j^*k~V4DZlR?up`_2{A+IC^+CXjEw1FnH21Juv)S1;`tu*tU+?6e zd+s^kdER^T*sBK*12|XARB;iuDY#a_bt*#GUX3^6O) zB+t#&2;=Q4-hp@4;1=8(!@E>0z`N@p@LtLAJ_YYraXUT`!v|G-2)nCs2kunyVcezQ zZWXif5jlKR4j+r*9u+q3m7+c_hfgT@q=HW=7*_CUDflxgPQ_$t%{ZuFR7I=& zeo;l6bj2Zo$faEydIUs=z?62&%sIO0Y}7M(BMd~23Pjs8X~T2`YCE^++w?@h5&EsXKYw5IDPXwbh$ubhAIvVLC>?VYhfB({K{qR&vmATG}Wh+L|`gPMbiu zY0*ZaX}408R@<32jrIBLX2b5$H)lwx>$H-3W}|MW<=iJmoPl&sAlBJ!*xRUq`?Gr5 z6qwO;WdK08W2epj7AZfPb5#pWI}Qyu>vliI)lagQ4&utpz$RCtZwOb@bYHilCkN>o z7oCE`0_r8#C5<5`O}}zIqh~j#^hOD>@pSH?S@QxgrJrm&KjavxiET7V$?CbB-cRO+ zPRs63Y{^+>Voi6~`mW7ejHDxtcG6kbMQ(sxpZg|L$smnR`XLPGEKb8#p5bipG^ee^ zrSy)o$xc%{g~fbz1U$V`-wNB-x06F`A(w6Bth}9cQMqan;^^3|V>^rciw_qM^Lu#g=Hj8TTZ#wfjonb(H@2g=SB{); zZO_;a$wAVd;;4d0HGB<61g4f<+%rH!QzWglEGOsK`p`PV8L(2h+9IqUhK9%R zO^M`j4d22V4d2FhG+csJ3W^%W@PvY+8orC~37k{B+f{eCxKG02r}z+&9^&^9za-x1 z0pnD{8g&;AYxq8%q^hT4_<@EW;zt^OEWI-;X=M|+yqRz;E0aq|*h!Xc+EnnghM(Z4 z0-7J`Mo!s-!ecL`0RqTo=kjH#@dUH4&9QpRg~G-0U>&Ubk(o)^h{w4;5+T zRdH#vtAd$jUF)^IvdD66Rc!YPo!cv-R1z9#>X2P8khR_0bB>V>R-#+}6IDB*FhFJn z56K>pVP|b<3Un+_IUB1g6cJMq7S(JocHZs4ivo-r@}?;bVq2IQ6fi-TD64q(*bGio zPs*lAo0@zXfit7z&xu&@WFfw7^2F-ulbydKsJL|Yu=|$7;D#W~loB{Eh{kWI0o*<% zDA6YgoX~GL9YnSwm0~kwbDI@}8(3*kg(_;8M8(_LOb)p%XWzWyL6$Jm zbUW4V%?Y*Y@}5;!pT{!xWCWRgCPJJelU^UvlLJPA{VvO6HX+ZUuFH8zp^%tkc~At} zeSF6pQ~z1|q^^x-471-EaBnN}!bDe;Phyz?Ouk79kx-*R6|(hs7oiFk z+4p4t`uyJC=)-aMyNi>Cx|-rj$y4F)2@71TZhiP9DlxX^b(wipxr|}3(MOurNRQOI z{nNc4_SkyTP=uz5DPo$2*JF($>UeUCdVvLHk!f?AHE1L{-76z67J8qabS#^xQIjpt z6wyGXot8D2r!uX>G!5G=aDx~g5BlAg=Uq`&v)VF7uF>1*U(AD+1ahfjW6$;>Bgp>0 zFM2Bf``%z2e94S&rkgiY2C(rs=Xh@S8s@5!dv^c-t@gtmd?rj%gvVN-h#3N>9%sa4 z5vjOvRQTAB9Om;`dJ$iEASvomJUE&n1&i+=QtB5<7~c^&m~tg7NLb>D?M-lVYYGC3S7aNG-NSt zUxX%XKsO~3Hdim_w}zCB*yQRtAFm^K2)(3FLFg4UDhLTnp^z&{lFn&+mZ}dTE z3lta53w6^AXsDY}z|6Ia_hQz5#5+eZyLZV5PFxpmo3pfllkUYMOXn0Yr#V7D#3OZc z3pkmsIDmN}+==Kg?m31&KZHlHpt))kr}U1Zk^fKajaL=0a0I7~peZtfMa@wPT3o=A zW+i-1tRWUxTt%0~m4=v9RXvKOy>-h*uzWuf1)N^M8O>_Ey6(&Z&WbZKuek%Y@hAyr zlTg4p({b*8oIeb;xh7syK+CR}7#_cGSD0hl@c5jyRCU4dcmrK@gfEyPoeeyLXX$b; zIDLqdGMi34k-<5M|K?yJ=3*Jcv=Z}}jPvQe1=!9%OYCIGZsXrKc9Y|NoQ6>b=LnWi z?s7_AiYK`1N%A~R8PDJ>YB_^XkTdzjILi&_E{5m{X5dwL1NH63g}55mFz4>43>}-H z;wFYONxd;j+Jh8VBh-Ea45mO8F{Jny>}R&`WON6RW-RC8QEcIkFeN^PL1bu6J<((- zPtckpFv%ApjtKQyT$QPkqONhGj3^jVuvNiq7S+pGsK6d4tm-nE6a@uLqfFCjWkSQSDffj=u1dN_t$DevgLkfft#6m7jDxbQ(tk>xAg3h~OfmPRkS^8anz`<{OTASiZX literal 0 HcmV?d00001 diff --git a/task3/target/classes/massage.json b/task3/target/classes/massage.json new file mode 100644 index 0000000..923cf4c --- /dev/null +++ b/task3/target/classes/massage.json @@ -0,0 +1,36 @@ +[ + { + "id": 1, + "notes": [ + { + "time": "11:29", + "note": "Hello" + }, + { + "time": "11:30", + "note": "Hello" + }, + { + "time": "11:32", + "note": "Hello" + } + ] + }, + { + "id": 2, + "notes": [ + { + "time": "11:30", + "note": "Hello2" + }, + { + "time": "11:31", + "note": "Hello2" + }, + { + "time": "11:33", + "note": "Hello2" + } + ] + } +] \ No newline at end of file diff --git a/task3/task3.iml b/task3/task3.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/task3/task3.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/task4/.DS_Store b/task4/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a11b2e81daa281972b90c48a8983912e97f6c35d GIT binary patch literal 6148 zcmeHK&2AGh5FRHX^#&nwKx&V^AaRIL(pK#ORa&Lx&>PYsH~?yQo2Xr}T}Rmsfrg;H z@DT6@JPJ?16+)Fq8h_*Y@yeff?KKgJ{$$W2Y7>!!GS&h#*9ga1SES}V zO`tGiyr*-@4l{j{WGmU;@jo)aYqv%t(pb62bY=Z?f(XABPoR%}8i7Srr-H_GVpn;Q z_3iqsWLk`p%w&B}Mp;^v-R=)jt2gd6*Q9L8*1gu7=uA(eGA<`YKOVp0-m|zoOPu{& z>uh1i$%}M2J!(JL*LfMI`EYEC)4>oauV1G5Ku`O6k`D?qPGkd81~NEmZ_H*po0}cA z)$PqYYPP%E?Wpaoo%uYF>koT-hsWn1E@mI+pT3xBlE5o%<0;hrqq4MmuzV|-=ONrV=C>lyG2EHhBI-8P^9Pyc@ZUoP@J&wyv( zRxuzN2hl+vQ*vkP%H;U0RnTK73+Gi97bP&vQH)$ZiZ`G};8$z_Lx+_`cp&~qz|i0u J&%i%r;1@E+fKdPd literal 0 HcmV?d00001 diff --git a/task4/.idea/compiler.xml b/task4/.idea/compiler.xml new file mode 100644 index 0000000..73f5ede --- /dev/null +++ b/task4/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/misc.xml b/task4/.idea/misc.xml new file mode 100644 index 0000000..d24ea8e --- /dev/null +++ b/task4/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/workspace.xml b/task4/.idea/workspace.xml new file mode 100644 index 0000000..89b4904 --- /dev/null +++ b/task4/.idea/workspace.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1593772003334 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/src/main/java/Client.java + 26 + + + + + \ No newline at end of file diff --git a/task4/pom.xml b/task4/pom.xml new file mode 100644 index 0000000..f1127d7 --- /dev/null +++ b/task4/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + org.example + task4 + 1.0-SNAPSHOT + + + + org.jsoup + jsoup + 1.13.1 + + + + \ No newline at end of file diff --git a/task4/src/.DS_Store b/task4/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3e7c033411d4dbd0d38dba6cdeee4d251e28845a GIT binary patch literal 6148 zcmeHK!AiqG5S^`2w-vDmL65lz9(rh1>Oq81_25m2=s~3>wrC*DN|Rc&R`MJA2Y!lQ z;OFSf?poC9Ra9nR_RY@DY_e~|ZUz8Eqt~hdlmS4Z5*CWsd?7SWIwl3{aS#Q~u^X$i zFjgVq$Q`1tG zWNEf^;$Nt~p9NVjZ3NvT>g@&DMQH7PrQ(qtga=W(-z?8>sU!=cq}|oYQLBw1$A?kU zQvHVNC9PD?%(DDE-ckHcTYRlH-p>Z z-M!fhfgh@tIg4-bfW~NnSAI8%RdS9#igzG`Hl&b!BIpsv-V=mf7G{7MUXE8U39u#3x5lyPF zC5Et-gD~kh?%DXWb7 P3jYXb8n|Hwew2Y%+!AK4 literal 0 HcmV?d00001 diff --git a/task4/src/main/.DS_Store b/task4/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e891ffeea8e3a471c75e3c0ca4781243bf950470 GIT binary patch literal 6148 zcmeHK%}(1u5S|TbyG~U#2c&ZJrBV+$Bv8Sjs$`{b;8w|q9@+|Q5*1gj7sU<{q(OcS zc!NF)Pr&1}-|TLq@^^)(nvrI|+1Z)3_gib%Lqw`S9`uOXM5LjNjR4IZ!sD#Bq~SeH zpyD~Ub90d9CPkko6j^)*c<-9@of0~x^qJNz-Fngb8XuZTTqV`G>?fno-20eRhpD%BjLGMAlI~{1$zFT;gDI*cD~2PR zoDGHu`SK|%24>PX<6=!I60mEoSmJ!y-@g2t-SR37cOAT7kC_xirf_6;N$p!Ml__742@wOuziE7Ux@mb zDs)AJ0bxKGSX>7DQK+9U?kmch2?N5wBQe0|LkMMzJk}2F(SgR606_kYv;y1y`U69D z03(mJLwF#{r2<{5@+F4ym4kBW7>|5>?a-x@vQNf5{>jQ$D9RTeDzxFGB8Son1H!;{ z29{j6&G-M-{q_I#BtV6$9HWA-G{PpTfU#h~=wz b1!@KUkPTquv33X#M1BM;4blh$56ZwF-PLHt literal 0 HcmV?d00001 diff --git a/task4/src/main/java/Client.java b/task4/src/main/java/Client.java new file mode 100644 index 0000000..4a25013 --- /dev/null +++ b/task4/src/main/java/Client.java @@ -0,0 +1,43 @@ +import java.io.*; +import java.net.*; + +public class Client { + public static void main(String[] args) throws IOException { + System.out.println("Клиент стартовал"); + Socket server = null; + + if (args.length==0) { + System.out.println("Использование: java Client hostname"); + System.exit(-1); + } + + System.out.println("Соединяемся с сервером "+args[0]); + + server = new Socket(args[0],1235); + BufferedReader in = new BufferedReader( + new InputStreamReader(server.getInputStream())); + PrintWriter out = + new PrintWriter(server.getOutputStream()); + BufferedReader inu = + new BufferedReader(new InputStreamReader(System.in)); + + String fserver; + + while (true) { + String fuser = inu.readLine(); + out.println(fuser); + out.flush(); + while ((fserver = in.readLine())!= null) + System.out.println(fserver); + if (fuser.equalsIgnoreCase("close")) + break; + if (fuser.equalsIgnoreCase("exit")) + break; + } +/* + out.close(); + in.close(); + inu.close(); + server.close();*/ + } +} \ No newline at end of file diff --git a/task4/src/main/java/Server.java b/task4/src/main/java/Server.java new file mode 100644 index 0000000..401501b --- /dev/null +++ b/task4/src/main/java/Server.java @@ -0,0 +1,29 @@ +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; + +public class Server { + static final int PORT = 1235; + + public static void main(String[] args) throws IOException { + ServerSocket s = new ServerSocket(PORT); + System.out.println("Мультипоточный сервер стартовал"); + try { + while (true) { + Socket socket = s.accept(); + try { + System.out.println("Новое соединение установлено"); + System.out.println("Данные клиента: "+ + socket.getInetAddress()); + new ServerOne(socket); + } + catch (IOException e) { + socket.close(); + } + } + } + finally { + s.close(); + } + } +} \ No newline at end of file diff --git a/task4/src/main/java/ServerOne.java b/task4/src/main/java/ServerOne.java new file mode 100644 index 0000000..80388be --- /dev/null +++ b/task4/src/main/java/ServerOne.java @@ -0,0 +1,67 @@ +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.io.*; +import java.net.*; + + +class ServerOne extends Thread { + private Socket socket; + private BufferedReader in; + private PrintWriter out; + private Elements Valuet; + private Document doc; + + + // Информация с сайта центрального банка + private void Getinformation() { + try { + doc = Jsoup.connect("https://www.cbr.ru/currency_base/daily/").get(); + Elements table = doc.getElementsByTag("tbody"); + Element ourtable = table.get(0); + Valuet = ourtable.children(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public ServerOne(Socket s) throws IOException { + socket = s; + in = new BufferedReader(new InputStreamReader(socket.getInputStream())); + out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); + start(); + } + + public void run() { + try { + while (true) { + String str = in.readLine(); + if (str.equals("END")) + break; + if (str.equalsIgnoreCase("valuet")){ + Getinformation(); + for (Element el: Valuet){ + out.println(el.text()); + out.println("\n"); + } + } + System.out.println("Получено: " + str); + out.println(str); + } + System.out.println("Соединение закрыто"); + } + catch (IOException e) { + System.err.println("Ошибка чтения/записи"); + } + finally { + try { + socket.close(); + } + catch (IOException e) { + System.err.println("Сокет не закрыт"); + } + } + } +} \ No newline at end of file diff --git a/task4/target/classes/Client.class b/task4/target/classes/Client.class new file mode 100644 index 0000000000000000000000000000000000000000..25f2a94fc3415349da64a7ee0320da84d0a1a171 GIT binary patch literal 2225 zcmaJ?+fx%)9R3c3Y*<#pMbuQQwDkgbLG8r~)LNrfY!E9Jing{(a)6a&H|}nz^hupQ zI^(N4ed%L=pWE&wcp7G2ot7EID3A#?{_`t{PE)H5`ZI^ z)A0(9G~!(xjiFCRKL%oWPbYn>jS43;Bz44aQo|_?r`7gD9Zfi+L&ujDRMw9!!exKaR?vBa6!X}hKmBx0n4`hV*>SE-J=4Lq?3^X@swrDbA{Z5bT66{ zS#sJ^PTI_lny#hj3NzwQTb@8HmCRbw_WNm{Gc8+SQ`hCxRdd$t&6@U9?}+bO_Ef*Z zZ_j%FG36 zW~57by;JZ7I#v|UGa!G=wfsnEVOSghYr5jwA zg8AT4P}DGP;1Vti91QN3ZU(zXGufjuyQW$KiDki{oiF%oo-}h|B@Ij< zt;{oOVcPA>s#OIwFo`K8pEl3~%fMC47|3E9yPwWF9;42I?TX0j7Ml_cb7B@{tn$DN zPh6F0%Boo53{`m?9A4?iTE#ifm${l|hiPyW)`lFi+5Ehkh%CeE=&Bvf^2z8L>>kzO zATO{l_>Rqa9Q?x8JTKkh?iu@fht1_LcwD-{&Z>1Oc-AQdHs{P4nRM*5>5p0dGJy!Hb+3$hm4KOVsbH|>)dGdmzACDm8O4ngd${1Q z41t1J1+SJ6J+TV0MxuaL4_>unUK|{)jJj$BHZCJq-x%t?$QHb5HdtOOm|1Ud%643t zG(B3Z+o($#uBox-dEU7?PnJFF%*e_;6gJ|tnf4ubPQzCm!Ib076xdf|(6*(U%$lAj z*`2%9MXz9lC+v)AXR^}U85;K2_NI!n#_-}?Uaq5FedC40-(M+oxf~UUq?yf*@XqSj za9vg8AP+t9NJ@pD@%MyP;J zf&h(p9d8hX#^NCwppo}*9(8T?3y6qR&(eLw71=MuKzMr4ToMbLQTVAN>@Z=^T!tc4WkZk5+Op5Z_&fs+}Gh9_~lpx STxR5PM&2hKqt0>ufAAlT3R-pm literal 0 HcmV?d00001 diff --git a/task4/target/classes/META-INF/task4.kotlin_module b/task4/target/classes/META-INF/task4.kotlin_module new file mode 100644 index 0000000000000000000000000000000000000000..a49347afef10a9b5f95305e1058ba36adec7d6dd GIT binary patch literal 16 RcmZQzU|?ooU|@t|0RRA102TlM literal 0 HcmV?d00001 diff --git a/task4/target/classes/Server.class b/task4/target/classes/Server.class new file mode 100644 index 0000000000000000000000000000000000000000..ceb263b0fc20513ccd355ea900402d8807e2440c GIT binary patch literal 1769 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 + \ No newline at end of file