Browse Source

outdoor users(15)

Louis Farina 3 years ago
parent
commit
b03bb2a335

+ 29
- 44
src/chat/ConnectionListenerThread.java View File

62
 					requestSocket.receive(request);
62
 					requestSocket.receive(request);
63
 					username = new String(request.getData(), 0, request.getLength());
63
 					username = new String(request.getData(), 0, request.getLength());
64
 					
64
 					
65
-					if(username.charAt(0) == '+')
65
+
66
+					InetAddress clientAddress= request.getAddress();
67
+					System.out.println("Received a request from " + username + "@" + clientAddress.getHostAddress());
68
+						
69
+					response = "";
70
+					for(User u:known_users)
66
 					{
71
 					{
67
-						username = username.substring(1);
68
-						outdoor = true;
72
+						response += u.getName() + " ";
69
 					}
73
 					}
70
-					else
74
+					response = response.trim();
75
+					response += ";";
76
+					for(User u:known_outdoor_users)
71
 					{
77
 					{
72
-						outdoor = false;
73
-						InetAddress clientAddress= request.getAddress();
74
-						System.out.println("Received a request from " + username + "@" + clientAddress.getHostAddress());
75
-						
76
-						response = "";
77
-						for(User u:known_users)
78
-						{
79
-							response += u.getName() + " ";
80
-						}
81
-						response = response.trim();
82
-						response += ";";
83
-						for(User u:known_outdoor_users)
84
-						{
85
-							response += u.getName() + " ";
86
-						}
87
-						response = response.trim();
88
-						response += ";";
89
-						for(Socket s:dest_sockets)
90
-						{
91
-							response += s.getInetAddress().getHostAddress() + " ";
92
-						}
93
-						response = response.trim();
78
+						response += u.getName() + " ";
79
+					}
80
+					response = response.trim();
81
+					response += ";";
82
+					for(Socket s:dest_sockets)
83
+					{
84
+						response += s.getInetAddress().getHostAddress() + " ";
85
+					}
86
+					response = response.trim();
94
 						
87
 						
95
-						response += ";" + (portNumber+1);
88
+					response += ";" + (portNumber+1);
96
 						
89
 						
97
-						System.out.println("Response :" + response);
98
-						responseBytes = response.getBytes();
99
-						responsePacket = new DatagramPacket(responseBytes, responseBytes.length, clientAddress, 1337);
100
-						responseSocket.send(responsePacket);
101
-					}
90
+					System.out.println("Response :" + response);
91
+					responseBytes = response.getBytes();
92
+					responsePacket = new DatagramPacket(responseBytes, responseBytes.length, clientAddress, 1337);
93
+					responseSocket.send(responsePacket);
94
+					
102
 					accepted = true;
95
 					accepted = true;
103
 					for(User a:known_users)
96
 					for(User a:known_users)
104
 					{
97
 					{
110
 					}
103
 					}
111
 					if(accepted)
104
 					if(accepted)
112
 					{
105
 					{
113
-						if(outdoor)
114
-						{
115
-							known_outdoor_users.add(new User(username));
116
-							Collections.sort(known_outdoor_users);
117
-						}
118
-						else
119
-						{
120
-							portNumber++;
121
-							Socket s = (new ServerSocket(portNumber)).accept();
122
-							(new ReceiveThread(user, s, displayArea, known_users, known_outdoor_users, knownUsersPanel, dest_sockets, outdoor_dest_sockets, false)).start();
123
-				        	dest_sockets.add(s);
124
-						}
106
+						portNumber++;
107
+						Socket s = (new ServerSocket(portNumber)).accept();
108
+						(new ReceiveThread(user, s, displayArea, known_users, known_outdoor_users, knownUsersPanel, dest_sockets, outdoor_dest_sockets, false)).start();
109
+				        dest_sockets.add(s);
125
 					}
110
 					}
126
 				}
111
 				}
127
 				catch(SocketTimeoutException e) {}
112
 				catch(SocketTimeoutException e) {}

+ 5
- 16
src/chat/OutdoorListenerThread.java View File

21
 	List<User> known_outdoor_users;
21
 	List<User> known_outdoor_users;
22
 	List<Socket> dest_sockets;
22
 	List<Socket> dest_sockets;
23
 	List<Socket> outdoor_dest_sockets;
23
 	List<Socket> outdoor_dest_sockets;
24
-	int portNumber;
24
+	int outdoorPortNumber;
25
 	
25
 	
26
 OutdoorListenerThread(User in_user, List<User> in_known_users,  List<User> in_known_outdoor_users, List<Socket> in_dest_sockets, List<Socket> in_outdoor_dest_sockets,
26
 OutdoorListenerThread(User in_user, List<User> in_known_users,  List<User> in_known_outdoor_users, List<Socket> in_dest_sockets, List<Socket> in_outdoor_dest_sockets,
27
 			JTextArea in_displayArea, JTextArea in_knownUsersPanel)
27
 			JTextArea in_displayArea, JTextArea in_knownUsersPanel)
33
 		outdoor_dest_sockets = in_outdoor_dest_sockets;
33
 		outdoor_dest_sockets = in_outdoor_dest_sockets;
34
 		displayArea = in_displayArea;
34
 		displayArea = in_displayArea;
35
 		knownUsersPanel = in_knownUsersPanel;
35
 		knownUsersPanel = in_knownUsersPanel;
36
-		portNumber = 2344;
36
+		outdoorPortNumber = 2344;
37
 	}
37
 	}
38
 	public void run()
38
 	public void run()
39
 	{
39
 	{
40
 		boolean exit = false;
40
 		boolean exit = false;
41
 		boolean accepted = true;
41
 		boolean accepted = true;
42
 
42
 
43
-		String notification;
44
 		String username;
43
 		String username;
45
 		String response = "";
44
 		String response = "";
46
 		
45
 		
47
-		byte[] buffer = new byte[100];
48
-		DatagramPacket notifPacket = new DatagramPacket(buffer, buffer.length);
49
-		DatagramSocket notifSocket;
50
-		byte[] notifBytes;
51
 		
46
 		
52
 		try
47
 		try
53
 		{
48
 		{
75
 						response += u.getName() + " ";
70
 						response += u.getName() + " ";
76
 					}
71
 					}
77
 					response = response.trim();
72
 					response = response.trim();
78
-					response += ";" + (portNumber+1);
73
+					response += ";" + (outdoorPortNumber+1);
79
 					
74
 					
80
 					out.println(response);
75
 					out.println(response);
81
 					
76
 					
90
 					}
85
 					}
91
 					if(accepted)
86
 					if(accepted)
92
 					{
87
 					{
93
-						notification = "+" + username;
94
-						notifBytes = notification.getBytes();
95
-						notifSocket = new DatagramSocket();
96
-						notifPacket = new DatagramPacket(notifBytes, notifBytes.length, InetAddress.getByName("192.168.1.255"), 1234);
97
-						notifSocket.send(notifPacket);
98
-						
99
-						portNumber++;
100
-						Socket s = (new ServerSocket(portNumber)).accept();
88
+						outdoorPortNumber++;
89
+						Socket s = (new ServerSocket(outdoorPortNumber)).accept();
101
 						(new ReceiveThread(user, s, displayArea, known_users, known_outdoor_users, knownUsersPanel, dest_sockets, outdoor_dest_sockets, true)).start();
90
 						(new ReceiveThread(user, s, displayArea, known_users, known_outdoor_users, knownUsersPanel, dest_sockets, outdoor_dest_sockets, true)).start();
102
 			        	outdoor_dest_sockets.add(s);
91
 			        	outdoor_dest_sockets.add(s);
103
 					}
92
 					}

+ 10
- 0
src/chat/ReceiveThread.java View File

1
 package chat;
1
 package chat;
2
 
2
 
3
 import java.io.EOFException;
3
 import java.io.EOFException;
4
+import java.net.SocketException;
4
 import java.io.IOException;
5
 import java.io.IOException;
5
 import java.io.ObjectInputStream;
6
 import java.io.ObjectInputStream;
6
 import java.io.ObjectOutputStream;
7
 import java.io.ObjectOutputStream;
90
 				            
91
 				            
91
 				            if(!dn.isRedirected() && !dn.getAuthor().equals(user))
92
 				            if(!dn.isRedirected() && !dn.getAuthor().equals(user))
92
 				            {
93
 				            {
94
+				            	exit = true;
95
+				            	
93
 				            	socket.close();
96
 				            	socket.close();
94
 				            	if(!isOutdoor)
97
 				            	if(!isOutdoor)
95
 				            	dest_sockets.remove(socket);
98
 				            	dest_sockets.remove(socket);
136
 		      }
139
 		      }
137
     	}
140
     	}
138
 		catch(EOFException e) {}
141
 		catch(EOFException e) {}
142
+		catch(SocketException e)
143
+		{
144
+            /*	if(!isOutdoor)
145
+            	dest_sockets.remove(socket);
146
+            	else
147
+            	outdoor_dest_sockets.remove(socket);*/
148
+		}
139
 		catch(Exception e)
149
 		catch(Exception e)
140
     	{
150
     	{
141
     		e.printStackTrace();
151
     		e.printStackTrace();

Loading…
Cancel
Save