public class Envoi extends Thread { private Vector objectATransmettres; private int aTransmettre; private ObjectOutputStream objectOut; private int nbDemandeNonresolues=0; private static final int LIMITEDEMANDE=3; public Envoi(ObjectOutputStream objectOutput){ objectOut=objectOutput; objectATransmettres=new Vector(); aTransmettre=0; } public void run(){ while(true){ try { sleep(500); } catch (InterruptedException e1) { e1.printStackTrace(); } System.err.println(nbDemandeNonresolues); if(aTransmettre>0){ try { if(nbDemandeNonresolues<=LIMITEDEMANDE){ ObjectTransmis objectTemp=(ObjectTransmis)objectATransmettres.elementAt(0); if(!objectTemp.getType().equals("envoiFichier")){ nbDemandeNonresolues++; } objectOut.writeObject(objectTemp); objectOut.flush(); objectATransmettres.remove(0); aTransmettre--; } } catch (IOException e) { e.printStackTrace(); } } } } public synchronized void envoi(ObjectTransmis objectTransmis){ System.out.println("envoi: "+objectTransmis.getType()); aTransmettre++; objectATransmettres.add(objectTransmis); } //type: 0 si decr, 1 si incr public synchronized void decrNbDemande(){ System.out.println("modifValeur"); System.err.println("decremente"); nbDemandeNonresolues--; System.err.println("nb Deamnde: "+nbDemandeNonresolues); if (nbDemandeNonresolues<0){ nbDemandeNonresolues=0; } } }
package clientController; import java.io.IOException; import java.io.ObjectInputStream; import java.util.Vector; import clientView.InterfacePrincipale; import partage.ObjectTransmis; /** * @author severine1 * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class Reception extends Thread { private ObjectInputStream objectIn; private InterfacePrincipale ip; public Reception(ObjectInputStream objectInProv,InterfacePrincipale ipProv){ objectIn=objectInProv; ip=ipProv; } public void run(){ try { ObjectTransmis objectTransmis=null; int i=0; while(true){ System.out.println("Reception: "+i); i++; System.out.println("byte disponible: "+objectIn.available()); objectTransmis=(ObjectTransmis)objectIn.readObject(); System.out.println("Reception: "+objectTransmis.getType()); System.out.println("apquet recu"); String type=objectTransmis.getType(); if (type.equals("smq")){ System.err.println("reception su smq"); ip.getConnexion().getEnvoi().decrNbDemande(); System.out.println("reception du smq"); Vector smqServeur=(Vector)objectTransmis.getContenu(); MajSMQ majSMQ=new MajSMQ(); majSMQ.recupSMQIn(smqServeur); } else if(type.equals("structureSmq")){ System.err.println("reception structure du smq"); ip.getConnexion().getEnvoi().decrNbDemande(); System.out.println("reception de la structure du smq"); Vector smqServeur=(Vector)objectTransmis.getContenu(); MajSMQ majSMQ=new MajSMQ(); majSMQ.recupStructureSMQIn(smqServeur); } else if(type.equals("nomComptes")){ System.err.println("reception nomComptes"); ip.getConnexion().getEnvoi().decrNbDemande(); Vector nomComptes=(Vector)objectTransmis.getContenu(); GestionCompte gc=new GestionCompte(); gc.getNomCompteIn(nomComptes); } else if(type.equals("messages")){ //System.out.println("changement valeur nbdemande"); ip.getConnexion().getEnvoi().decrNbDemande(); MajMessages majMessages=new MajMessages(ip); majMessages.recupMessageIn((Vector[])objectTransmis.getContenu()); } else if(type.equals("fichierTelecharge")){ System.err.println("fichiertelecharger"); ip.getConnexion().getEnvoi().decrNbDemande(); MajSMQ majSMQ=new MajSMQ(); System.err.println("fichierTelechargé recu"); Vector newFichier=(Vector)objectTransmis.getContenu(); majSMQ.telechargerFichiersIn((String)newFichier.elementAt(0),(byte[])newFichier.elementAt(1),((Integer)newFichier.elementAt(2)).intValue()); } else if(type.equals("erreur")){ } } } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }