bugfixes TCP (4)

This commit is contained in:
Louis Farina 2021-01-12 19:04:25 +01:00
parent fbf236692a
commit 3c3a1fb0a9

View file

@ -124,14 +124,16 @@ class ConnectionListenerThread extends Thread {
JTextArea knownUsersPanel; JTextArea knownUsersPanel;
List<User> known_users; List<User> known_users;
List<Socket> dest_sockets; List<Socket> dest_sockets;
int portNumber;
ConnectionListenerThread(User in_user, List<User> in_known_users, List<Socket> in_dest_sockets, JTextArea in_displayArea, JTextArea in_knownUsersPanel) ConnectionListenerThread(User in_user, List<User> in_known_users, List<Socket> in_dest_sockets, JTextArea in_displayArea, JTextArea in_knownUsersPanel, int in_portNumber)
{ {
user = in_user; user = in_user;
known_users = in_known_users; known_users = in_known_users;
dest_sockets = in_dest_sockets; dest_sockets = in_dest_sockets;
displayArea = in_displayArea; displayArea = in_displayArea;
knownUsersPanel = in_knownUsersPanel; knownUsersPanel = in_knownUsersPanel;
portNumber = in_portNumber;
} }
public void run() public void run()
{ {
@ -163,23 +165,6 @@ class ConnectionListenerThread extends Thread {
InetAddress clientAddress= request.getAddress(); InetAddress clientAddress= request.getAddress();
System.out.println("Received a request from " + username + "@" + clientAddress.getHostAddress()); 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; accepted = true;
for(User a:known_users) for(User a:known_users)
{ {
@ -203,7 +188,27 @@ class ConnectionListenerThread extends Thread {
{ {
knownUsersPanel.append(" " + a.getName() + " \n"); 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) {} catch(SocketTimeoutException e) {}
} }
@ -274,7 +279,7 @@ public class NetworkClient {
DatagramPacket connectionRequest; DatagramPacket connectionRequest;
DatagramPacket responsePacket; DatagramPacket responsePacket;
int portNumber = 1237;
byte[] buffer1 = new byte[20000]; byte[] buffer1 = new byte[20000];
if(username == null || username.compareTo("") == 0) if(username == null || username.compareTo("") == 0)
@ -304,6 +309,7 @@ public class NetworkClient {
String[] usernameList = response[0].split(" "); String[] usernameList = response[0].split(" ");
String[] addressList = response[1].split(" "); String[] addressList = response[1].split(" ");
portNumber = Integer.parseInt(response[2]);
for(String u:usernameList) for(String u:usernameList)
@ -319,7 +325,7 @@ public class NetworkClient {
} }
for(String a:addressList) for(String a:addressList)
{ {
Socket s = new Socket(a, (1237+usernameList.length)); Socket s = new Socket(a, portNumber);
dest_sockets.add(s); dest_sockets.add(s);
(new ReceiveThread(user, s, chatText, known_users, knownUsersPanel, dest_sockets)).start(); (new ReceiveThread(user, s, chatText, known_users, knownUsersPanel, dest_sockets)).start();
} }
@ -349,14 +355,14 @@ public class NetworkClient {
if(connected) if(connected)
{ {
(new ConnectionListenerThread(user, known_users, dest_sockets, chatText, knownUsersPanel)).start(); (new ConnectionListenerThread(user, known_users, dest_sockets, chatText, knownUsersPanel, portNumber)).start();
try try
{ {
ServerSocket s1 = new ServerSocket(1237+(known_users.size())); ServerSocket s1 = new ServerSocket(portNumber);
(new ListenerStartThread(s1, dest_sockets)).start(); (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(); (new ReceiveThread(user, s2, chatText, known_users, knownUsersPanel, dest_sockets)).start();
} }
catch(IOException e) catch(IOException e)
@ -392,6 +398,7 @@ public class NetworkClient {
{ {
try try
{ {
System.out.println(s.getInetAddress().getHostAddress() + ": local port " + s.getLocalPort() + ", remote port " + s.getPort());
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(new Message(user.getName(), message)); out.writeObject(new Message(user.getName(), message));
} }