Server Java

Jiner Messages postés 4 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 3 mars 2008 - 3 mars 2008 à 10:55
Jiner Messages postés 4 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 3 mars 2008 - 3 mars 2008 à 13:20
Je suis en train de dévelloper un logiciel devant communiquer avec un autre par TCP sur une même machine. J'ai donc dévellopé deux clients, l'un envoyant des informations sur une socket branché au port 6020 et l'autre recevant des informations par le biais de la même socket. Bien sur vous me dirait que cela paraît abérent de créer deux clients pour cela, mais sans rentrer dans les détails je développe un systeme Sma ne me permettant pas cela. Mon problème est que je n'ai pas le logiciel avec lequel je doit communiquer, mais un simple serveur me permettant de recevoir et de renvoyer les fluxs me suffirait pour l'instant. Est ce que quelq'un aurai le code d'un serveur sous la main me permettant de faire ce que je désire.
Merci.

2 réponses

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
3 mars 2008 à 12:30
regarde sur le site ... au pire c'est pas bien compliquer de rediriger ce que recois un serveur vers les autres clients

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Jiner Messages postés 4 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 3 mars 2008
3 mars 2008 à 13:20
Merci j'ai finit par trouvé un serveur fonctionnant mais malheureusement le problème vient de ce que j'ai développé. Maintenant il me faut cerner le problème. J'ai l'impression que sa vient d'un problème de synchronistaion du client qui vient chercher le message et celui qui en envoi un.
Je met au cas ou mes classes clients si quelqun y voit le problème qui reste obscure pour moi.

Client pour la reception de message en provenance du serveur

public class B_Envoi_MessSma extends CyclicBehaviour
{


 private static final long serialVersionUID = 1L;
 Socket sockcli=null;
 DataInputStream in;
 int Port=6020;
 
 public B_Envoi_MessSma(Agent a) throws IOException
 {
  super(a);//Création d'une action cyclic
 }
 public void action() //définition de l'action à réaliser
 {
  {
   String mess=null;
   if (connexion()==0)//lorsque la connection est faites on lit le flux en entrée
   {
     try {in=new DataInputStream(sockcli.getInputStream());}
     catch (IOException e) {e.printStackTrace();}
     mess=reçoit();
   }
   if (mess != null)
   {
    System.out.println("Lucy m'informe que l'action"+mess+"est finit");
   }
   
  }
 }
 
 private int connexion()
 { String url = "127.0.0.1";
  try 
  {  
   if (url.equals("Stop"))return 1;//deconnexion si l'on entre la valeur stop au lieu d'une adresse
   sockcli = new Socket (url, Port); //connexion au port 6020
   System.out.println("Conexion etablie pour la reception");
   return 0;//0="connection etablie"
  }
  catch (IOException ex)//si la connexion ne s'établie pas la fenetre client renvoi ce message
  { System.out.println("erreur debut client pour reception" + ex); return -1; }//0 pas de connection 
 }
 
 public String reçoit ()
 { 
  boolean boucle=true;
  String mess=null;//message a transmettre initialisé a null*/
  while(boucle)
  { 
   try {mess=Flux.lecture(in);}//reception du flux en entrée
   catch (IOException e) {e.printStackTrace();}
   if (mess!=null)
   {
    boucle=false;
   }
  }
  System.out.println("Je reçoit ce message: "+mess);//affichage en console du message reçu
  return mess; 
 }
 
}


Client pour l'envoi de message :




public
class B_Attente_MessSma
extends CyclicBehaviour


{



//private static final MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.REQUEST);












private





static





final





long





serialVersionUID

= 1L;Socket


sockcli
=


null

;DataOutputStream


out
;



int




Port
=6020;



public

B_Attente_MessSma(Agent a)


throws

IOException{



super

(a);}



public





void

action() {

{

ACLMessage oMessage =


myAgent
.receive();

//reception interne d'un message à envoyer

String mess=




""
;



if

(oMessage !=


null

)

//partie permettant de formatter la chaine de caractère pour l'envoi

{


mess+=oMessage.getSender().getLocalName()+




"$"
;



if

(oMessage.getContent().contains(

"deplacement"
)){

mess+=


"deplacement$"
;System.



out

.println(

myAgent
.getLocalName() +

" dit : "
+ oMessage.getSender().getLocalName() +


" m'informe de son '"
+ oMessage.getContent() +


"'. Transmission a Lucy."
);}



else








if

(oMessage.getContent().contains(

"action"
)){

mess+=


"action$"
;}



else

System.


out

.println(

""
);mess+=oMessage.getContent()+


"$"
;



if

(mess!=


null

)

//si il y a un message à envoyer







if

(connexion()==0)

//si la connexion se fait

{








try

{

out
=


new

DataOutputStream(

sockcli
.getOutputStream());}



catch

(IOException e) {e.printStackTrace();}envoi(mess);

System.



out

.println(

"Le message :"
+mess+

" est bien envoyé"
);}

}



else

{ block();} }

}



private





int

connexion() { String url =


"127.0.0.1"
;



try


{








if

(url.equals(

"Stop"
))


return

1;

//deconnexion si l'on entre la valeur stop au lieu d'une adresse






sockcli
=


new

Socket (url,

Port
);

//requête serveur

System.





out

.println(

"Connexion établie pour l'envoi"
);



return

0;

//0="connection etablie"

}








catch

(IOException ex)

//si la connexion ne s'établie pas la fenetre client renvoi ce message

{ System.





out

.println(

"erreur debut client pour envoi"
+ ex);


return

-1; }

//0 pas de connection

}











public





void

envoi (String s) { String mess=s;


/*new Message("","","");//message a transmettre initialisé a null*/







try

{Flux.ecriture(

out
, mess);}

//si le message est non null alors on l'envoie







catch

(IOException e) {e.printStackTrace();}

//dépot du message dans la chaine d'émission (objet d'envoi)

}


}

Voila ces deux clients marchent séparément, mais lorsque je les met en marche en même temps plus rien n'est transmit!
0
Rejoignez-nous