version_2(broadcast+BD)
This commit is contained in:
		
							parent
							
								
									21780d4c4c
								
							
						
					
					
						commit
						34f15aefd2
					
				
					 7 changed files with 180 additions and 223 deletions
				
			
		|  | @ -28,7 +28,7 @@ import view.Interface; | |||
| public class Controller { | ||||
| 
 | ||||
| 	/*** CONSTANTES ***/ | ||||
| 	int NB_SECOND_WAITING_RESPONSE_BROADCAST = 2; | ||||
| 	final int NB_SECOND_WAITING_RESPONSE_BROADCAST = 1; | ||||
| 	 | ||||
| 	// TO REMOVE when we use broadcast | ||||
| 	final static int portUDPlistening_remoteUsr1 = 31001;  | ||||
|  | @ -41,15 +41,15 @@ public class Controller { | |||
| 	/*** ATTRIBUTS ***/ | ||||
| 	protected LocalUser myUser; | ||||
| 	protected Interface view; | ||||
| 	private ListeningThreadUDP udp_connect_thread; | ||||
| 	private ListeningThreadTCPConnection tcp_connect_thread; | ||||
| 	private TListeningUDP udp_connect_thread; | ||||
| 	private TListeningTCPConnection tcp_connect_thread; | ||||
| 	private Historique histoire; | ||||
| 	protected Chat activeChat; | ||||
| 	 | ||||
| 	/** | ||||
| 	 *  Constructor of Controller | ||||
| 	 * @parametres | ||||
| 	 * 		@param portUDPsend : int => le numéro de port pour envoyé ces informations lors d'un changements ou d'une nouvelle connexion | ||||
| 	 * 		@param portUDPsend : int => le numéro de port pour envoyer ces informations lors d'un changements ou d'une nouvelle connexion | ||||
| 	 * 		@param portUDPlistening : int => le numéro de port pour recevoir les informations des nouveaux utilisateurs ou les changements | ||||
| 	 * 		@param portTCP : int => le numéro de port pour commencer une nouvelle conversation | ||||
| 	 * @throws IOException  | ||||
|  | @ -85,9 +85,9 @@ public class Controller { | |||
| 		} | ||||
| 		 | ||||
| 		// Création des threads d'écoutes | ||||
| 		this.udp_connect_thread = new ListeningThreadUDP("UDP Listening thread",this); | ||||
| 		this.udp_connect_thread = new TListeningUDP("UDP Listening thread",this); | ||||
| 		this.udp_connect_thread.start(); | ||||
| 		this.tcp_connect_thread = new ListeningThreadTCPConnection("TCP main Listening thread",this); | ||||
| 		this.tcp_connect_thread = new TListeningTCPConnection("TCP main Listening thread",this); | ||||
| 		this.tcp_connect_thread.start(); | ||||
| 		 | ||||
| 		// Notification des utilisateurs distants | ||||
|  | @ -122,6 +122,7 @@ public class Controller { | |||
| 		try | ||||
| 		{ | ||||
| 			addIP = InetAddress.getLocalHost(); | ||||
| 			 | ||||
| 		} | ||||
| 		catch(UnknownHostException e) { | ||||
| 			JOptionPane.showMessageDialog(null ,"Could not find local address!"); | ||||
|  | @ -133,10 +134,10 @@ public class Controller { | |||
| 			if(this.validatePseudo(pseudo)) { | ||||
| 				 | ||||
| 				 | ||||
| 				this.udp_connect_thread = new ListeningThreadUDP("UDP Listening thread",this); | ||||
| 				this.udp_connect_thread = new TListeningUDP("UDP Listening thread",this); | ||||
| 				this.udp_connect_thread.start(); | ||||
| 				 | ||||
| 				this.tcp_connect_thread = new ListeningThreadTCPConnection("TCP main Listening thread",this); | ||||
| 				this.tcp_connect_thread = new TListeningTCPConnection("TCP main Listening thread",this); | ||||
| 				this.tcp_connect_thread.start(); | ||||
| 				 | ||||
| 				 | ||||
|  | @ -156,7 +157,39 @@ public class Controller { | |||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	/*** GETTERS ***/ | ||||
| 	public LocalUser getMyUser() { | ||||
| 		return myUser; | ||||
| 	} | ||||
| 	public Interface getview() { | ||||
| 		return view; | ||||
| 	} | ||||
| 	public TListeningUDP getUdp_connect_thread() { | ||||
| 		return udp_connect_thread; | ||||
| 	} | ||||
| 	public TListeningTCPConnection getTcp_connect_thread() { | ||||
| 		return tcp_connect_thread; | ||||
| 	} | ||||
| 	public Historique getHistory() { | ||||
| 		return histoire; | ||||
| 	} | ||||
| 	 | ||||
| 	/*** SETTERS ***/ | ||||
| 	public void setMyUser(LocalUser myUser) { | ||||
| 		this.myUser = myUser; | ||||
| 	} | ||||
| 	public void setview(Interface view) { | ||||
| 		this.view = view; | ||||
| 	} | ||||
| 	public void setUdp_connect_thread(TListeningUDP udp_connect_thread) { | ||||
| 		this.udp_connect_thread = udp_connect_thread; | ||||
| 	} | ||||
| 	public void setTcp_connect_thread(TListeningTCPConnection tcp_connect_thread) { | ||||
| 		this.tcp_connect_thread = tcp_connect_thread; | ||||
| 	} | ||||
| 	public void setHistory(Historique histoire) { | ||||
| 		this.histoire=histoire; | ||||
| 	} | ||||
| 	 | ||||
| 	/**************************** Initialisation pseudo et découverte utilisateur distant (+notification utilisateurs distants) **********************************/ | ||||
| 	 | ||||
|  | @ -222,7 +255,7 @@ public class Controller { | |||
| 		DatagramSocket dgramSocket = new DatagramSocket(this.myUser.getPortUDPsend(),this.myUser.getAddIP()); | ||||
| 		 | ||||
| 		// Création du message à envoyer | ||||
| 		String toSend = this.myUser.getAddIP()+":"+this.myUser.getPortUDPsend()+":info"; | ||||
| 		String toSend = this.myUser.getAddIP().getHostAddress()+":"+this.myUser.getPortUDPsend()+":info"; | ||||
| 		 | ||||
| 		// Broadcast du message | ||||
| 		broadcast(dgramSocket,toSend); | ||||
|  | @ -255,7 +288,7 @@ public class Controller { | |||
| 				// On découpe la réponse en tableau de string ([adresseIP,tcpPort,nickname]) | ||||
| 				tabresponse = response.split(":"); | ||||
| 				// Si reception on ajoute l'utilisateur à notre liste d'utilisateur distant | ||||
| 				this.myUser.addRemoteUser(InetAddress.getByName(tabresponse[0].split("/")[1]),Integer.parseInt(tabresponse[1]),tabresponse[2]); | ||||
| 				this.myUser.addRemoteUser(InetAddress.getByName(tabresponse[0]),Integer.parseInt(tabresponse[1]),tabresponse[2]); | ||||
| 				valid= (tmpPseudo.compareTo(tabresponse[2])!=0); // On regarde la différence entre notre pseudo et le pseudo reçu	 | ||||
| 			} | ||||
| 	        newDate = new Date(); | ||||
|  | @ -304,23 +337,8 @@ public class Controller { | |||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|          | ||||
| 		// Send to other active user (simulation of broadcast) | ||||
|         String toSend = this.myUser.getAddIP().toString()+":"+this.myUser.getPortTCP()+":"+this.myUser.getPseudo()+":notify"; | ||||
|         /* | ||||
|         DatagramPacket outPacket =null; | ||||
|         int tabBroadcastSize = tabBroadcast.length; | ||||
| 		for(int i=0;i<tabBroadcastSize;i++) { | ||||
| 			if(tabBroadcast[i]!=myUser.getPortUDPlistening()) { | ||||
| 				outPacket = new DatagramPacket(toSend.getBytes(), toSend.length(),this.myUser.getAddIP(), tabBroadcast[i]); | ||||
| 	            try { | ||||
| 	                dgramSocket.send(outPacket); | ||||
| 	            } catch (IOException e) { | ||||
| 	                e.printStackTrace(); | ||||
| 	            } | ||||
| 			} | ||||
| 			 | ||||
| 		}*/ | ||||
|         String toSend = this.myUser.getAddIP().getHostAddress()+":"+this.myUser.getPortTCP()+":"+this.myUser.getPseudo()+":notify"; | ||||
|         broadcast(dgramSocket,toSend); | ||||
|         dgramSocket.close(); | ||||
| 	} | ||||
|  | @ -347,15 +365,20 @@ public class Controller { | |||
| 	     | ||||
| 	    /*** recup history and put it in model ***/ | ||||
| 	    try { | ||||
| 	        //System.out.println(this.getHistory().retrieveMessage(getMyUser(), c.getRemoteUser())); | ||||
| 	        try { | ||||
| 				c.addListMessage(this.getHistory().retrieveMessage(getMyUser(), c.getRemoteUser())); | ||||
| 		} catch (SQLException e) { | ||||
| 			System.out.println("souci avec le retrieveMsg"); | ||||
| 			} catch (ClassNotFoundException e) { | ||||
| 				e.printStackTrace(); | ||||
| 			} | ||||
| 		} catch (SQLException e) { | ||||
| 			System.out.println("souci avec le retrieveMsgSQL"); | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 	    //System.out.println(myUser.getChats().get(myUser.getChatIndexOf(rm))); | ||||
| 	    return c; | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 
 | ||||
| 	public String askOpenSession(int index) { | ||||
| 		String history=""; | ||||
| 		RemoteUser rm = myUser.getRemoteUsersList().get(index); | ||||
|  | @ -382,6 +405,10 @@ public class Controller { | |||
| 		return history; | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	 | ||||
| 	 | ||||
| 	 | ||||
| 	public void askCloseSession() { | ||||
| 		closeSession(this.activeChat); | ||||
| 		this.activeChat = null; | ||||
|  | @ -431,13 +458,12 @@ public class Controller { | |||
| 		out.println(msg); | ||||
| 		 | ||||
| 	} | ||||
| 	 | ||||
| 	/* | ||||
| 	public String askNewMessage() { | ||||
| 		String message = ""; | ||||
| 		return message; | ||||
| 	} | ||||
| 	}*/ | ||||
| 	 | ||||
| 	/**************************** Autre fonctions **********************************/ | ||||
| 
 | ||||
| 	public String [] askUpdateActiveUsers() { | ||||
| 		String[] pseudotab = new String[myUser.getRemoteUsersList().size()]; | ||||
|  | @ -468,75 +494,47 @@ public class Controller { | |||
| 		Historique histoire=new Historique(); | ||||
| 		 | ||||
| 		/** Création des utilisateurs **/ | ||||
| 		// REMOTEUSER_1 - THEAU | ||||
| 		ArrayList<Controller> lstCtr = new ArrayList<Controller>(); | ||||
| 
 | ||||
| 		// REMOTE USERS | ||||
| 		Controller ctr1 = new Controller(31011,portUDPlistening_remoteUsr1,31021,"Theau",histoire);  | ||||
| 		// REMOTEUSER_2 - LEONIE | ||||
| 		lstCtr.add(ctr1); | ||||
| 		Controller ctr2 = new Controller(31012,portUDPlistening_remoteUsr2,31022,"Leonie",histoire); | ||||
| 		// REMOTEUSER_3 - ALEXANDRE | ||||
| 		lstCtr.add(ctr2); | ||||
| 		Controller ctr3 = new Controller(31013,portUDPlistening_remoteUsr3,31023,"Alexandre",histoire);  | ||||
| 		lstCtr.add(ctr3); | ||||
| 
 | ||||
| 		// LOCAL USER - AS YOU WANT | ||||
| 		// LOCAL USER | ||||
| 		Controller ctr = new Controller(31014,portUDPlistening_local,31024,histoire);  | ||||
| 		lstCtr.add(ctr); | ||||
| 		 | ||||
| 		/** loop **/ | ||||
| 		Boolean running = ctr1.interfaceRunning || ctr2.interfaceRunning || ctr3.interfaceRunning || ctr.interfaceRunning; | ||||
| 		 | ||||
| 		/** Loop **/ | ||||
| 		Boolean running = isRunning(lstCtr); | ||||
| 		while(running) { | ||||
| 			running = ctr1.interfaceRunning || ctr2.interfaceRunning || ctr3.interfaceRunning || ctr.interfaceRunning; | ||||
| 			running = isRunning(lstCtr); | ||||
| 		} | ||||
| 		 | ||||
| 		System.out.println("Fin de la boucle"); | ||||
| 		System.out.println("Fin de la boucle");//TOREMOVE | ||||
| 		 | ||||
| 		 | ||||
| 				 | ||||
| 		/** Close thread and socket **/ | ||||
| 		// REMOTEUSER_1 - THEAU | ||||
| 		ctr1.close(); | ||||
| 		// REMOTEUSER_2 - LEONIE | ||||
| 		ctr2.close(); | ||||
| 		// REMOTEUSER_3 - ALEXANDRE | ||||
| 		ctr3.close(); | ||||
| 		// LOCAL USER | ||||
| 		ctr.close(); | ||||
| 		 | ||||
| 		// AFFICHAGE | ||||
| 		/** End - Close thread and socket for every controller**/ | ||||
| 		closeThreads(lstCtr); | ||||
| 		System.out.println("end program"); | ||||
| 		JOptionPane.showMessageDialog(null ,"END"); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	 | ||||
| 	/*** GETTERS ***/ | ||||
| 	public LocalUser getMyUser() { | ||||
| 		return myUser; | ||||
| 	static boolean isRunning(ArrayList<Controller> lstCtr){ | ||||
| 		boolean isRunning=false; | ||||
| 		for(Controller ctr : lstCtr) { | ||||
| 			isRunning|=ctr.interfaceRunning; | ||||
| 		} | ||||
| 	public Interface getview() { | ||||
| 		return view; | ||||
| 	} | ||||
| 	public ListeningThreadUDP getUdp_connect_thread() { | ||||
| 		return udp_connect_thread; | ||||
| 	} | ||||
| 	public ListeningThreadTCPConnection getTcp_connect_thread() { | ||||
| 		return tcp_connect_thread; | ||||
| 	} | ||||
| 	public Historique getHistory() { | ||||
| 		return histoire; | ||||
| 		return isRunning; | ||||
| 	} | ||||
| 	 | ||||
| 	/*** SETTERS ***/ | ||||
| 	public void setMyUser(LocalUser myUser) { | ||||
| 		this.myUser = myUser; | ||||
| 	static void closeThreads(ArrayList<Controller> lstCtr) { | ||||
| 		for(Controller ctr : lstCtr) { | ||||
| 			ctr.close(); | ||||
| 		} | ||||
| 	public void setview(Interface view) { | ||||
| 		this.view = view; | ||||
| 	} | ||||
| 	public void setUdp_connect_thread(ListeningThreadUDP udp_connect_thread) { | ||||
| 		this.udp_connect_thread = udp_connect_thread; | ||||
| 	} | ||||
| 	public void setTcp_connect_thread(ListeningThreadTCPConnection tcp_connect_thread) { | ||||
| 		this.tcp_connect_thread = tcp_connect_thread; | ||||
| 	} | ||||
| 	public void setHistory(Historique histoire) { | ||||
| 		this.histoire=histoire; | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ import model.Msg_Text; | |||
| 
 | ||||
| public class Historique { | ||||
| 	 | ||||
| 	public void saveMessage(model.User ctr1, model.RemoteUser ctr2, String input, String date) { | ||||
| 	public void saveMessage(model.User author, model.RemoteUser receiver, String input, String date) { | ||||
| 		try { | ||||
| 			Class.forName("java.sql.Driver"); | ||||
| 		} catch (ClassNotFoundException e) { | ||||
|  | @ -46,7 +46,7 @@ public class Historique { | |||
| 			// TODO Auto-generated catch block | ||||
| 			e1.printStackTrace(); | ||||
| 		} | ||||
| 
 | ||||
| /* | ||||
| 		try { | ||||
| 		nb_changed_rows = stat.executeUpdate("CREATE TABLE chat ( user_IPcode1 INTEGER, user_IPcode2 INTEGER ,Message VARCHAR(450) ,temps VARCHAR(450) )"); | ||||
| 		}catch (Exception e) { | ||||
|  | @ -54,9 +54,9 @@ public class Historique { | |||
| 
 | ||||
| 		} | ||||
| 		System.out.println("coucou"); | ||||
| 
 | ||||
| */ | ||||
| 		try { | ||||
| 			nb_changed_rows = stat.executeUpdate("INSERT INTO chat VALUES ('"+ctr1.getIPcode()+"','"+ctr2.getIPcode()+"','"+input+"','"+date+"')"); | ||||
| 			nb_changed_rows = stat.executeUpdate("INSERT INTO chat VALUES ('"+author.getIPcode()+"','"+receiver.getIPcode()+"','"+input+"','"+date+"')"); | ||||
| 		} catch (SQLException e) { | ||||
| 			System.out.println("insertion pas établie"); | ||||
| 			e.printStackTrace(); | ||||
|  | @ -82,106 +82,52 @@ public class Historique { | |||
| 		 | ||||
| 	} | ||||
| 	 | ||||
| 	public ArrayList<Message> retrieveMessage(model.LocalUser user1, model.RemoteUser user2) throws SQLException { | ||||
| 		try { | ||||
| 	public ArrayList<Message> retrieveMessage(model.LocalUser usr, model.RemoteUser rmusr) throws SQLException, ClassNotFoundException { | ||||
| 		ArrayList<Message> messages=new ArrayList<Message>(); | ||||
| 		 | ||||
| 		Class.forName("java.sql.Driver"); | ||||
| 		} catch (ClassNotFoundException e) { | ||||
| 			// TODO Auto-generated catch block | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 		Connection con=DriverManager.getConnection("jdbc:mysql://srv-bdens.insa-toulouse.fr:3306","tp_servlet_003","povu3Ma2"); | ||||
| 		Statement stat = null; | ||||
| 		try { | ||||
| 		stat = con.createStatement(); | ||||
| 		} catch (SQLException e2) { | ||||
| 			// TODO Auto-generated catch block | ||||
| 			e2.printStackTrace(); | ||||
| 		} | ||||
| 		stat.executeUpdate("USE tp_servlet_003"); | ||||
| /* | ||||
| 		Statement stat2 = null; | ||||
| 		try { | ||||
| 		stat2 = con.createStatement(); | ||||
| 		} catch (SQLException e1) { | ||||
| 			// TODO Auto-generated catch block | ||||
| 			e1.printStackTrace(); | ||||
| 		} | ||||
| 		int	nb_changed_rows = stat.executeUpdate("USE tp_servlet_003"); | ||||
| 		stat.executeUpdate("USE tp_servlet_003"); | ||||
| */ | ||||
| 		 | ||||
| 		try { | ||||
| 			nb_changed_rows = stat.executeUpdate("USE TABLE chat ( user_IPcode1 INTEGER, user_IPcode2 INTEGER ,Message VARCHAR(450) ,temps VARCHAR(450) )"); | ||||
| 		}catch (Exception e) { | ||||
| 			e.printStackTrace(); | ||||
| 		//int	nb_changed_rows; | ||||
| 
 | ||||
| 		String query = "SELECT user_IPcode1 ,Message, temps" | ||||
| 				+" FROM chat WHERE (user_IPcode1="+usr.getIPcode() | ||||
| 				+" AND user_IPcode2="+rmusr.getIPcode()+") " | ||||
| 				+"OR (user_IPcode1="+rmusr.getIPcode()+" " | ||||
| 						+ "AND user_IPcode2="+usr.getIPcode()+") " | ||||
| 				+ "ORDER BY temps;"; | ||||
| 		ResultSet resultQueryRS=(stat.executeQuery(query)); | ||||
| 		 | ||||
| 		int autorIPcode; | ||||
| 		String message; | ||||
| 		String strDate; | ||||
| 		 | ||||
| 		boolean encore = resultQueryRS.next(); | ||||
| 		while(encore) { | ||||
| 			autorIPcode=resultQueryRS.getInt(1); | ||||
| 			message=resultQueryRS.getString(2);; | ||||
| 			strDate=resultQueryRS.getString(3); | ||||
| 			if(usr.getIPcode()==autorIPcode) { | ||||
| 				messages.add(new Msg_Text(usr,strDate,message)); | ||||
| 			} | ||||
| 			else { | ||||
| 				messages.add(new Msg_Text(rmusr,strDate,message)); | ||||
| 			} | ||||
| 			encore=resultQueryRS.next(); | ||||
| 			 | ||||
| 		} | ||||
| 		nb_changed_rows = stat2.executeUpdate("USE tp_servlet_003"); | ||||
| 
 | ||||
| 		try { | ||||
| 			nb_changed_rows = stat2.executeUpdate("USE TABLE chat ( user_IPcode1 INTEGER, user_IPcode2 INTEGER ,Message VARCHAR(450) ,temps VARCHAR(450) )"); | ||||
| 		}catch (Exception e) { | ||||
| 			e.printStackTrace(); | ||||
| 
 | ||||
| 		} | ||||
| 		ResultSet RSSent=(stat.executeQuery("SELECT user_IPcode1, user_IPcode2, Message, temps FROM chat WHERE user_IPcode1="+user1.getIPcode())); | ||||
| 		//System.out.println(RSSent); | ||||
| 		boolean encore1 = RSSent.next(); | ||||
| 		ResultSet RSReceived=(stat2.executeQuery("SELECT user_IPcode1, user_IPcode2, Message, temps FROM chat WHERE user_IPcode1="+user2.getIPcode())); | ||||
| 	    boolean encore2 = RSReceived.next(); | ||||
| 	    ArrayList<Message> message=new ArrayList<Message>(); | ||||
| 	    //String message=null; | ||||
| 	    String[] string1=null; | ||||
| 	    String[] string2=null; | ||||
| 	    Calendar date1=Calendar.getInstance(); | ||||
| 	    Calendar date2=Calendar.getInstance(); | ||||
| 	    while(encore1 || encore2) { | ||||
| 			//RSSent=(stat.executeQuery("SELECT user_IPcode1, user_IPcode2, Message, temps FROM chat WHERE user_IPcode1="+user1.getIPcode())); | ||||
| 			//boolean temp=RSSent.next(); | ||||
| 			 | ||||
| 	    	while (RSSent.getInt(2)!=user2.getIPcode()) { | ||||
| 	    		encore1=RSSent.next(); | ||||
| 	    	} | ||||
|     		string1=RSSent.getString(4).split(" "); | ||||
|     		date1.set(Integer.valueOf(string1[0]), Integer.valueOf(string1[1]), Integer.valueOf(string1[2]),Integer.valueOf(string1[3]), Integer.valueOf(string1[4]), Integer.valueOf(string1[5])); | ||||
| 
 | ||||
|     		//RSReceived=(stat.executeQuery("SELECT user_IPcode1, user_IPcode2, Message, temps FROM chat WHERE user_IPcode1="+user2.getIPcode())); | ||||
|     	    //boolean tempi = RSReceived.next(); | ||||
| 
 | ||||
| 	    	while (RSReceived.getInt(1)!=user1.getIPcode()) { | ||||
| 		    	encore2=RSReceived.next(); | ||||
| 	    	} | ||||
|     		string2=RSReceived.getString(4).split(" "); | ||||
|     		date2.set(Integer.valueOf(string2[0]), Integer.valueOf(string2[1]), Integer.valueOf(string2[2]),Integer.valueOf(string2[3]), Integer.valueOf(string2[4]), Integer.valueOf(string2[5])); | ||||
|     		 | ||||
| 	    	if (date1.compareTo(date2)>=0) { | ||||
| 	    		Msg_Text msg =new Msg_Text(user2,RSReceived.getString(4),RSReceived.getString(3)); | ||||
| 	    		message.add(msg); | ||||
| 	    		Msg_Text msg1 =new Msg_Text(user1,RSSent.getString(4),RSSent.getString(3)); | ||||
| 	    		message.add(msg1); | ||||
| 	    	}else { | ||||
| 	    		Msg_Text msg1 =new Msg_Text(user1,RSSent.getString(4),RSSent.getString(3)); | ||||
| 	    		message.add(msg1); | ||||
| 	    		Msg_Text msg =new Msg_Text(user2,RSReceived.getString(4),RSReceived.getString(3)); | ||||
| 	    		message.add(msg); | ||||
| 	    	} | ||||
|     		encore1=RSSent.next(); | ||||
| 	    	encore2=RSReceived.next(); | ||||
| 
 | ||||
| 	    } | ||||
| 		RSSent.close(); | ||||
| 		RSReceived.close(); | ||||
| 		stat.close(); | ||||
| 		stat2.close(); | ||||
| 		con.close(); | ||||
| 		 | ||||
| 		return message; | ||||
| 		return messages; | ||||
| 	} | ||||
| 	 | ||||
| 
 | ||||
| //	//MAIN | ||||
| //	public Historique() { | ||||
| //		 | ||||
| //		System.out.println("coucoudb"); | ||||
| //		 | ||||
| //		 | ||||
| //	} | ||||
| 	 | ||||
| 	 | ||||
| } | ||||
|  |  | |||
|  | @ -1,16 +0,0 @@ | |||
| package controller; | ||||
| 
 | ||||
| 
 | ||||
| public abstract class ListeningThread extends Thread{ | ||||
| 	 | ||||
| 	protected Controller controller; | ||||
| 	 | ||||
| 	public ListeningThread(String s,Controller controller) { | ||||
| 		super(s); | ||||
| 		this.controller = controller; | ||||
| 	} | ||||
| 	 | ||||
| 	public abstract void run(); | ||||
| 	 | ||||
| 	public abstract void close(); | ||||
| } | ||||
|  | @ -11,8 +11,9 @@ import java.net.Socket; | |||
| import java.util.Calendar; | ||||
| import java.util.Date; | ||||
| 
 | ||||
| public class ListeningThreadTCPChat extends ListeningThread{ | ||||
| public class TListeningTCPChat extends Thread{ | ||||
| 	 | ||||
| 	protected Controller controller; | ||||
| 	private Socket socket; | ||||
| 	 | ||||
| 	/* CONSTRUCTOR OF ListeningThreadTCPConnection | ||||
|  | @ -23,10 +24,9 @@ public class ListeningThreadTCPChat extends ListeningThread{ | |||
| 	 * 	<p> | ||||
| 	 * 	</p> | ||||
| 	 */ | ||||
| 	public ListeningThreadTCPChat(String s,Controller controller,Socket socket) {  | ||||
| 		super(s,controller); | ||||
| 	public TListeningTCPChat(String s,Controller controller,Socket socket) {  | ||||
| 		this.controller = controller; | ||||
| 		this.socket=socket; | ||||
| 		// TODO OpenSession si ouverture exterieur | ||||
| 	} | ||||
| 	 | ||||
| 	/* run | ||||
|  | @ -4,10 +4,12 @@ import java.io.IOException; | |||
| import java.net.ServerSocket; | ||||
| import java.net.Socket; | ||||
| 
 | ||||
| public class ListeningThreadTCPConnection extends ListeningThread{ | ||||
| public class TListeningTCPConnection extends Thread{ | ||||
| 	 | ||||
| 	protected Controller controller; | ||||
| 	private Socket socket_tcp=null; | ||||
| 	private int nbChat = 0; | ||||
| 	 | ||||
| 	/* CONSTRUCTOR OF ListeningThreadTCPConnection | ||||
| 	 * @parametres  | ||||
| 	 * 		@param s : String => nom du thread | ||||
|  | @ -16,15 +18,14 @@ public class ListeningThreadTCPConnection extends ListeningThread{ | |||
| 	 * 	<p> | ||||
| 	 * 	</p> | ||||
| 	 */ | ||||
| 	public ListeningThreadTCPConnection(String s,Controller controller) {  | ||||
| 		super(s,controller); | ||||
| 		 | ||||
| 	public TListeningTCPConnection(String s,Controller controller) {  | ||||
| 		this.controller = controller; | ||||
| 	} | ||||
| 	 | ||||
| 	public void accept(ServerSocket servSocket) throws IOException { | ||||
| 		Socket socket_tcp= servSocket.accept(); | ||||
| 		this.nbChat++; | ||||
| 		ListeningThreadTCPChat threadtcpchat = new ListeningThreadTCPChat("Chat_of_"+controller.myUser.getPseudo()+"_"+nbChat,controller,socket_tcp); | ||||
| 		TListeningTCPChat threadtcpchat = new TListeningTCPChat("Chat_of_"+controller.myUser.getPseudo()+"_"+nbChat,controller,socket_tcp); | ||||
| 		threadtcpchat.start(); | ||||
| 		threadtcpchat.interrupt(); | ||||
| 		 | ||||
|  | @ -8,8 +8,9 @@ import java.net.DatagramSocket; | |||
| import java.net.InetAddress; | ||||
| import java.net.UnknownHostException; | ||||
| 
 | ||||
| public class ListeningThreadUDP extends ListeningThread{ | ||||
| public class TListeningUDP extends Thread{ | ||||
| 
 | ||||
| 	protected Controller controller; | ||||
| 	private DatagramSocket dgramSocket = null; | ||||
| 	 | ||||
| 	 | ||||
|  | @ -23,13 +24,14 @@ public class ListeningThreadUDP extends ListeningThread{ | |||
| 	 * 		Création d'un socket d'écoute UDP | ||||
| 	 * </p> | ||||
| 	 */ | ||||
| 	public ListeningThreadUDP(String s,Controller controller) {  | ||||
| 		super(s,controller); | ||||
| 	public TListeningUDP(String s,Controller controller) {  | ||||
| 		this.controller = controller; | ||||
| 		try { | ||||
| 			this.dgramSocket = new DatagramSocket(this.controller.myUser.getPortUDPlistening(),this.controller.myUser.getAddIP()); | ||||
| 		} catch (IOException e) { | ||||
| 			e.printStackTrace(); | ||||
| 		}	 | ||||
| 		 | ||||
| 	} | ||||
| 	 | ||||
| 	/* run | ||||
|  | @ -60,19 +62,18 @@ public class ListeningThreadUDP extends ListeningThread{ | |||
| 			String receiveMsg = new String(buffer); | ||||
| 			String [] tabMsg = receiveMsg.split(":"); | ||||
| 			 | ||||
| 			 | ||||
| 			// si demande d'information d'un nouvel utilisateur | ||||
| 			if(tabMsg.length==3) {  | ||||
| 				InetAddress itsIP = null; | ||||
| 				try { | ||||
| 					itsIP = InetAddress.getByName(tabMsg[0].split("/")[1]); // On récupère l'adresse IP de l'utilisateur distant | ||||
| 					itsIP = InetAddress.getByName(tabMsg[0]); // On récupère l'adresse IP de l'utilisateur distant | ||||
| 				} catch (UnknownHostException e1) { | ||||
| 					// TODO Auto-generated catch block | ||||
| 					e1.printStackTrace(); | ||||
| 				} | ||||
| 				int senderUDPport = Integer.parseInt(tabMsg[1]); // On récupère le port UDP de l'utilisateur distant | ||||
| 				 | ||||
| 				String toSend = controller.myUser.getAddIP().toString()+":"+controller.myUser.getPortTCP()+":"+controller.myUser.getPseudo()+":test"; | ||||
| 				String toSend = controller.myUser.getAddIP().getHostAddress()+":"+controller.myUser.getPortTCP()+":"+controller.myUser.getPseudo()+":test"; | ||||
| 				DatagramPacket outPacket= new DatagramPacket(toSend.getBytes(), toSend.length(),itsIP, senderUDPport); | ||||
| 
 | ||||
| 				try { | ||||
|  | @ -86,7 +87,7 @@ public class ListeningThreadUDP extends ListeningThread{ | |||
| 			else {  | ||||
| 				try { | ||||
| 					// On récupère l'adresse IP et le port TCP de l'utilisateur distant et ajout à la liste de l'utilisateur utilisant ce thread  | ||||
| 					controller.myUser.addRemoteUser(InetAddress.getByName(tabMsg[0].split("/")[1]),Integer.parseInt(tabMsg[1]),tabMsg[2]); | ||||
| 					controller.myUser.addRemoteUser(InetAddress.getByName(tabMsg[0]),Integer.parseInt(tabMsg[1]),tabMsg[2]); | ||||
| 				} catch (NumberFormatException e) { | ||||
| 					// TODO Auto-generated catch block | ||||
| 					e.printStackTrace(); | ||||
|  | @ -26,7 +26,7 @@ public abstract class User { | |||
| 		this.pseudo = pseudo; | ||||
| 		this.addIP=addIP; | ||||
| 		this.portTCP=portTCP; | ||||
| 		this.IPcode=addIP.hashCode(); | ||||
| 		this.IPcode=hashCode(); | ||||
| 	} | ||||
| 
 | ||||
| 	 | ||||
|  | @ -57,6 +57,15 @@ public abstract class User { | |||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	@Override | ||||
| 	public int hashCode() { | ||||
| 		final int prime = 31; | ||||
| 		int result = 1; | ||||
| 		String ip=addIP.getHostAddress(); | ||||
| 		result = prime * result + ((ip == null) ? 0 : ip.hashCode()); | ||||
| 		result = prime * result + portTCP; | ||||
| 		return result; | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	@Override | ||||
|  | @ -68,12 +77,30 @@ public abstract class User { | |||
| 		if (getClass() != obj.getClass()) | ||||
| 			return false; | ||||
| 		User other = (User) obj; | ||||
| 		if (addIP == null) { | ||||
| 			if (other.addIP != null) | ||||
| 				return false; | ||||
| 		} else if (!addIP.equals(other.addIP)) | ||||
| 			return false; | ||||
| 		if (portTCP != other.portTCP) | ||||
| 			return false; | ||||
| 		return true; | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	@Override | ||||
| 	public String toString() { | ||||
| 		return "User [pseudo=" + pseudo + ", addIP=" + addIP.getHostAddress() + ", portTCP=" + portTCP + ", IPcode=" + IPcode + "]"; | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	 | ||||
| 	 | ||||
| 	 | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue