| 
					
				 | 
			
			
				@@ -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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |