|
@@ -4,24 +4,102 @@ import com.company.Transport;
|
|
|
|
|
|
import java.io.*;
|
|
|
import java.net.Socket;
|
|
|
-import java.nio.charset.StandardCharsets;
|
|
|
+import java.util.Scanner;
|
|
|
|
|
|
public class Main {
|
|
|
public static void main(String[] args) {
|
|
|
+ Socket socket = null;
|
|
|
try {
|
|
|
- Socket socket = new Socket("192.168.10.81", 9125);
|
|
|
+ socket = new Socket("localhost", 9125);
|
|
|
|
|
|
- ObjectOutputStream os = new ObjectOutputStream(socket.getOutputStream());
|
|
|
- ObjectInputStream is = new ObjectInputStream(socket.getInputStream());
|
|
|
+ ReadThread readThread = new ReadThread(socket);
|
|
|
+ WriteThread writeThread = new WriteThread(socket);
|
|
|
|
|
|
- Transport t = new Transport();
|
|
|
- t.Name = "Hello";
|
|
|
- t.Message = "World";
|
|
|
+ readThread.start();
|
|
|
+ writeThread.start();
|
|
|
|
|
|
- os.writeObject(t);
|
|
|
+ readThread.join();
|
|
|
+ writeThread.join();
|
|
|
|
|
|
- } catch (IOException e) {
|
|
|
+ } catch (IOException | InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
+ if (socket != null) {
|
|
|
+ try {
|
|
|
+ socket.close();
|
|
|
+ } catch (IOException exception) {
|
|
|
+ exception.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+class ReadThread extends Thread {
|
|
|
+ private Socket socket;
|
|
|
+
|
|
|
+ public ReadThread(Socket socket) {
|
|
|
+ this.socket = socket;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ while (!isInterrupted()) {
|
|
|
+ try {
|
|
|
+ ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
|
|
|
+
|
|
|
+ Object o = ois.readObject();
|
|
|
+ if (o instanceof Transport) {
|
|
|
+ Transport t = (Transport)o;
|
|
|
+
|
|
|
+ System.out.print("\033[1;31m\033[40m " + t.Name + ": \u001B[0m ");
|
|
|
+ System.out.println(t.Message);
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (IOException | ClassNotFoundException exception) {
|
|
|
+ exception.printStackTrace();
|
|
|
+ try {
|
|
|
+ socket.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+class WriteThread extends Thread {
|
|
|
+ private Socket socket;
|
|
|
+ private Scanner scanner;
|
|
|
+ private final String Name = "Alec";
|
|
|
+
|
|
|
+ public WriteThread(Socket socket) {
|
|
|
+ this.socket = socket;
|
|
|
+ this.scanner = new Scanner(System.in);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ while (!isInterrupted()) {
|
|
|
+ try {
|
|
|
+ ObjectOutputStream ois = new ObjectOutputStream(socket.getOutputStream());
|
|
|
+
|
|
|
+ Transport t = new Transport();
|
|
|
+ t.Name = this.Name;
|
|
|
+ t.Message = scanner.nextLine();
|
|
|
+
|
|
|
+ ois.writeObject(t);
|
|
|
+ ois.flush();
|
|
|
+
|
|
|
+ } catch (IOException exception) {
|
|
|
+ exception.printStackTrace();
|
|
|
+ try {
|
|
|
+ socket.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|