From ea3b5b61828370889b38aa4aa106799628f0b48d Mon Sep 17 00:00:00 2001 From: Teryaev Sergey Date: Thu, 12 Apr 2018 18:34:33 +1100 Subject: [PATCH 01/19] =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B4=D0=BE=D0=BB=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Classwork/client/Controller.java | 4 +++ .../lesson_06/Classwork/client/Main.java | 23 +++++++++++++ .../lesson_06/Classwork/client/sample.fxml | 4 +++ .../lesson_06/Classwork/server/MainClass.java | 34 +++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 src/ru/geekbrains/java2/lesson_06/Classwork/client/Controller.java create mode 100644 src/ru/geekbrains/java2/lesson_06/Classwork/client/Main.java create mode 100644 src/ru/geekbrains/java2/lesson_06/Classwork/client/sample.fxml create mode 100644 src/ru/geekbrains/java2/lesson_06/Classwork/server/MainClass.java diff --git a/src/ru/geekbrains/java2/lesson_06/Classwork/client/Controller.java b/src/ru/geekbrains/java2/lesson_06/Classwork/client/Controller.java new file mode 100644 index 0000000..5eecfd3 --- /dev/null +++ b/src/ru/geekbrains/java2/lesson_06/Classwork/client/Controller.java @@ -0,0 +1,4 @@ +package ru.geekbrains.java2.lesson_06.Classwork.client; + +public class Controller { +} diff --git a/src/ru/geekbrains/java2/lesson_06/Classwork/client/Main.java b/src/ru/geekbrains/java2/lesson_06/Classwork/client/Main.java new file mode 100644 index 0000000..b9db19a --- /dev/null +++ b/src/ru/geekbrains/java2/lesson_06/Classwork/client/Main.java @@ -0,0 +1,23 @@ +package ru.geekbrains.java2.lesson_06.Classwork.client; + +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("Hello World"); + primaryStage.setScene(new Scene(root, 300, 275)); + primaryStage.show(); + } + + + public static void main(String[] args) { + launch(args); + } +} diff --git a/src/ru/geekbrains/java2/lesson_06/Classwork/client/sample.fxml b/src/ru/geekbrains/java2/lesson_06/Classwork/client/sample.fxml new file mode 100644 index 0000000..9efdbe6 --- /dev/null +++ b/src/ru/geekbrains/java2/lesson_06/Classwork/client/sample.fxml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/src/ru/geekbrains/java2/lesson_06/Classwork/server/MainClass.java b/src/ru/geekbrains/java2/lesson_06/Classwork/server/MainClass.java new file mode 100644 index 0000000..8b3fcea --- /dev/null +++ b/src/ru/geekbrains/java2/lesson_06/Classwork/server/MainClass.java @@ -0,0 +1,34 @@ +package ru.geekbrains.java2.lesson_06.Classwork.server; + +import java.io.IOException; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Scanner; + +public class MainClass { + public static void main(String[] args) { + try (ServerSocket serverSocket = new ServerSocket(8189)) { + System.out.println("Server started..."); + Socket socket = serverSocket.accept(); + System.out.println("Client connected."); + + Scanner scanner = new Scanner(socket.getInputStream()); + PrintWriter writer = new PrintWriter(socket.getOutputStream()); + + String msg = ""; + while (!msg.equals("/end")) { + msg = scanner.nextLine(); + System.out.println("Client said: " + msg); + writer.println("echo answer: " + msg); + writer.flush(); + } + System.out.println("Command for disconnect"); + socket.close(); + System.out.println("Server stopped..."); + } catch (IOException e) { + e.printStackTrace(); + } + + } +} From 96b34ae972e8b44d92dafece76c5ac8f64fc9cd4 Mon Sep 17 00:00:00 2001 From: Teryaev Sergey Date: Thu, 12 Apr 2018 23:15:06 +1100 Subject: [PATCH 02/19] =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20(=D0=B7=D0=B0=D0=B2=D0=B5=D1=80=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Classwork/client/Controller.java | 72 ++++++++++++++++++- .../lesson_06/Classwork/client/Main.java | 4 +- .../lesson_06/Classwork/client/sample.fxml | 18 +++-- .../{MainClass.java => ServerMain.java} | 14 ++-- 4 files changed, 94 insertions(+), 14 deletions(-) rename src/ru/geekbrains/java2/lesson_06/Classwork/server/{MainClass.java => ServerMain.java} (68%) diff --git a/src/ru/geekbrains/java2/lesson_06/Classwork/client/Controller.java b/src/ru/geekbrains/java2/lesson_06/Classwork/client/Controller.java index 5eecfd3..ff76fa0 100644 --- a/src/ru/geekbrains/java2/lesson_06/Classwork/client/Controller.java +++ b/src/ru/geekbrains/java2/lesson_06/Classwork/client/Controller.java @@ -1,4 +1,74 @@ package ru.geekbrains.java2.lesson_06.Classwork.client; -public class Controller { +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.Socket; +import java.net.URL; +import java.util.ResourceBundle; + +public class Controller implements Initializable { + public static final String SERVER_IP = "localhost"; + public static final int SERVER_PORT = 8189; + + @FXML + public TextArea chatArea; + @FXML + public TextField msgField; +// public Button sendButton; + + private Socket socket; + private DataOutputStream out; + + @Override + public void initialize(URL location, ResourceBundle resources) { + try { + socket = new Socket(SERVER_IP, SERVER_PORT); + DataInputStream in = new DataInputStream(socket.getInputStream()); + out = new DataOutputStream(socket.getOutputStream()); + Thread thread = new Thread(() -> { + String msg = ""; + try { + while (!msg.equals("echo answer: /end")) { + msg = in.readUTF(); + chatArea.appendText(msg + "\n"); + } + chatArea.appendText("соединение разорвано\n"); + } catch (IOException e) { + System.err.println("Сервер рвзорвал соединение"); + e.printStackTrace(); +// System.exit(0); + } + try { + socket.close(); + } catch (IOException e) { + e.printStackTrace(); + } + }); + thread.setDaemon(true); + thread.start(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void sendMsg() { + if (!msgField.getText().equals("")) + try { + out.writeUTF(msgField.getText()); + out.flush(); + msgField.clear(); + msgField.requestFocus(); + } catch (IOException e) { + chatArea.appendText("нет связи с сервером\n"); + } + } + } + diff --git a/src/ru/geekbrains/java2/lesson_06/Classwork/client/Main.java b/src/ru/geekbrains/java2/lesson_06/Classwork/client/Main.java index b9db19a..4c4e59b 100644 --- a/src/ru/geekbrains/java2/lesson_06/Classwork/client/Main.java +++ b/src/ru/geekbrains/java2/lesson_06/Classwork/client/Main.java @@ -11,8 +11,8 @@ public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception{ Parent root = FXMLLoader.load(getClass().getResource("sample.fxml")); - primaryStage.setTitle("Hello World"); - primaryStage.setScene(new Scene(root, 300, 275)); + primaryStage.setTitle("Geek JavaFX chat"); + primaryStage.setScene(new Scene(root, 400, 600)); primaryStage.show(); } diff --git a/src/ru/geekbrains/java2/lesson_06/Classwork/client/sample.fxml b/src/ru/geekbrains/java2/lesson_06/Classwork/client/sample.fxml index 9efdbe6..13236a6 100644 --- a/src/ru/geekbrains/java2/lesson_06/Classwork/client/sample.fxml +++ b/src/ru/geekbrains/java2/lesson_06/Classwork/client/sample.fxml @@ -1,4 +1,14 @@ - - - \ No newline at end of file + + + + + + +