From 3c3a1fb0a93bf9cb5cc1f09c7ba1220ca458f05c Mon Sep 17 00:00:00 2001 From: Metatheria Date: Tue, 12 Jan 2021 19:04:25 +0100 Subject: [PATCH] bugfixes TCP (4) --- src/chat/NetworkClient.java | 55 +++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/src/chat/NetworkClient.java b/src/chat/NetworkClient.java index c3d16d9..1b6cf5a 100644 --- a/src/chat/NetworkClient.java +++ b/src/chat/NetworkClient.java @@ -124,14 +124,16 @@ class ConnectionListenerThread extends Thread { JTextArea knownUsersPanel; List known_users; List dest_sockets; + int portNumber; - ConnectionListenerThread(User in_user, List in_known_users, List in_dest_sockets, JTextArea in_displayArea, JTextArea in_knownUsersPanel) + ConnectionListenerThread(User in_user, List in_known_users, List in_dest_sockets, JTextArea in_displayArea, JTextArea in_knownUsersPanel, int in_portNumber) { user = in_user; known_users = in_known_users; dest_sockets = in_dest_sockets; displayArea = in_displayArea; knownUsersPanel = in_knownUsersPanel; + portNumber = in_portNumber; } public void run() { @@ -163,23 +165,6 @@ class ConnectionListenerThread extends Thread { InetAddress clientAddress= request.getAddress(); System.out.println("Received a request from " + username + "@" + clientAddress.getHostAddress()); - response = ""; - for(User u:known_users) - { - response += u.getName() + " "; - } - response = response.trim(); - response += ";"; - for(Socket s:dest_sockets) - { - response += s.getInetAddress().getHostAddress() + " "; - } - response = response.trim(); - System.out.println("Response :" + response + "!"); - responseBytes = response.getBytes(); - responsePacket = new DatagramPacket(responseBytes, responseBytes.length, clientAddress, 1337); - responseSocket.send(responsePacket); - accepted = true; for(User a:known_users) { @@ -203,7 +188,27 @@ class ConnectionListenerThread extends Thread { { knownUsersPanel.append(" " + a.getName() + " \n"); } - } + portNumber++; + } + response = ""; + for(User u:known_users) + { + response += u.getName() + " "; + } + response = response.trim(); + response += ";"; + for(Socket s:dest_sockets) + { + response += s.getInetAddress().getHostAddress() + " "; + } + response = response.trim(); + response += ";" + portNumber; + + System.out.println("Response :" + response); + responseBytes = response.getBytes(); + responsePacket = new DatagramPacket(responseBytes, responseBytes.length, clientAddress, 1337); + responseSocket.send(responsePacket); + } catch(SocketTimeoutException e) {} } @@ -274,7 +279,7 @@ public class NetworkClient { DatagramPacket connectionRequest; DatagramPacket responsePacket; - + int portNumber = 1237; byte[] buffer1 = new byte[20000]; if(username == null || username.compareTo("") == 0) @@ -304,6 +309,7 @@ public class NetworkClient { String[] usernameList = response[0].split(" "); String[] addressList = response[1].split(" "); + portNumber = Integer.parseInt(response[2]); for(String u:usernameList) @@ -319,7 +325,7 @@ public class NetworkClient { } for(String a:addressList) { - Socket s = new Socket(a, (1237+usernameList.length)); + Socket s = new Socket(a, portNumber); dest_sockets.add(s); (new ReceiveThread(user, s, chatText, known_users, knownUsersPanel, dest_sockets)).start(); } @@ -349,14 +355,14 @@ public class NetworkClient { if(connected) { - (new ConnectionListenerThread(user, known_users, dest_sockets, chatText, knownUsersPanel)).start(); + (new ConnectionListenerThread(user, known_users, dest_sockets, chatText, knownUsersPanel, portNumber)).start(); try { - ServerSocket s1 = new ServerSocket(1237+(known_users.size())); + ServerSocket s1 = new ServerSocket(portNumber); (new ListenerStartThread(s1, dest_sockets)).start(); - Socket s2 = new Socket("25.67.234.235", 1237+(known_users.size())); + Socket s2 = new Socket("25.67.234.235", portNumber); (new ReceiveThread(user, s2, chatText, known_users, knownUsersPanel, dest_sockets)).start(); } catch(IOException e) @@ -392,6 +398,7 @@ public class NetworkClient { { try { + System.out.println(s.getInetAddress().getHostAddress() + ": local port " + s.getLocalPort() + ", remote port " + s.getPort()); ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); out.writeObject(new Message(user.getName(), message)); }