France Hardware : Forums de discussion - Découvrez notre nouveau comparateur d'offres Internet
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
29 511 membres enregistrés - 2 069 318 posts - 122 026 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Langages
                simulateur de l'algo de synchronisation d'horloges
72 connectés(record : 2799 le 29 May 2016 - 15 h 34)

Vous devez vous connecter pour répondre au topic.
simulateur de l'algo de synchronisation d'horloges

maydo


Messages : 1
Inscrit le 25/11/06
Non connecté
  Posté le 25 November 2006 - 14 h 23 m 18 s
salut tout le monde ,
je viens vers vous car j'ai besoin de votre aide j'ai un serveur qui gère deux clients en même temps et je voudrais interconnecter mes deux clients sans pour autant les transformer en serveur ou passer par le serveur ou si possible faire d'un client un autre serveurce qui me tracasse beaucoup
le but du projet est de permettre dans un premier temps au serveur qui joue le role de lanceur de synchronisation d'envoyer des processus(14) de façon aléatoire aux deux clients qui sont executeurs et qui hebergent les differents processus,des processus qui sont à la fois correcte ou bizantynes; ensuite les processus vont communiquer entre elles a travers les clients.

voici mes codes:
****************************************************************************
celui ci pour les client 1
****************************************************************************

import java.io.*;
import java.net.*;
import java.util.*;


public class EchoClient1 {

public static void main(String[] args) throws IOException{

Socket echoSocket = null;
Socket connexion = null;
PrintWriter out = null;
BufferedReader in = null;
PrintWriter out1 = null;
BufferedReader in1 = null;
String userInput;
String Client1 ="";
String message ="";
// Socket connexion = null;
BufferedReader stdIn = new BufferedReader( new
InputStreamReader(System.in));
BufferedReader stdIn1 = new BufferedReader( new
InputStreamReader(System.in));


boolean fini = false;


try{
echoSocket = new Socket("138.231.140.171",8189);
out = new PrintWriter(echoSocket.getOutputStream(),true);
in = new BufferedReader(new
InputStreamReader(echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Connection à l'hote impossible");
stdIn.read();
System.exit(1);
} catch (IOException e) {

System.err.println("Impossible d'associer un Flux au socket");

stdIn.read();
System.exit(1);

}

System.out.println("connection faite");
System.out.println("Message serveur: " + in.readLine());

/* //Créer une nouvelle socket et s'y connecte
try {
InetAddress addr = InetAddress.getByName(Client1);
connexion = new Socket(addr, 8189);
} catch (UnknownHostException e) {
} catch (IOException e) {}

//lire la socket
try {
in1 = new BufferedReader(new InputStreamReader
(connexion.getInputStream()));
message = in.readLine();
} catch (IOException e) {}

//affichage du message
System.out.println("Message: " + message);*/

while(fini == false){
userInput = stdIn.readLine();
if (userInput.equals("BY")) fini = true;
out.println("Client1 : "+ userInput);
System.out.println("Message serveur: " + in.readLine());

}

out.close();
in.close();
stdIn.close();
echoSocket.close();
}
}

***************************************************************************
pour le client 2

***************************************************************************
import java.io.*;
import java.net.*;
import java.util.*;


public class EchoClient2 {

public static void main(String[] args) throws IOException{

Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
String userInput;

BufferedReader stdIn = new BufferedReader( new InputStreamReader(System.in));

boolean fini = false;
try{
echoSocket = new Socket("138.231.140.171",8189);
out = new PrintWriter(echoSocket.getOutputStream(),true);
in = new BufferedReader(new
InputStreamReader(echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Connection à l'hote impossible");
stdIn.read();
System.exit(1);
} catch (IOException e) {

System.err.println("Impossible d'associer un Flux au socket");

stdIn.read();
System.exit(1);

}

System.out.println("connection faite");
System.out.println("Message serveur: " + in.readLine());


while(fini == false){
userInput = stdIn.readLine();
if (userInput.equals("BY")) fini = true;
out.println("Client2 : "+ userInput);
System.out.println("Message serveur: " + in.readLine());
}
out.close();
in.close();
stdIn.close();
echoSocket.close();
}
}

***************************************************************************
le code du serveur
***************************************************************************

import java.io.*;
import java.net.*;
import java.util.*;


public class EchoServer1{

public static void main(String[] args){
String lin;

BufferedReader stdIn = new BufferedReader( new
InputStreamReader(System.in));
try{
ServerSocket s = new ServerSocket(8189);
System.out.println("serveur actif sur le port " + 8189);
while(true){

Socket echoSocket = s.accept();
String nom = echoSocket.getInetAddress().getHostName();
System.out.println(nom + " connecté");
Timer timer = new Timer();
timer.scheduleAtFixedRate( new TimerTask() {
public void run() {
System.out.println("time :" + System.currentTimeMillis());
}
}, 0, //s'execute a partir de maintenant
50000); //toutes les 50000 millisecondes
new ThreadProcessus(echoSocket).start();
}
}
catch(IOException e){ System.err.println(e); }
}
}

***************************************************************************
LA CLASSE THREADPROCESSUS
****************************************************************************

import java.io.*;
import java.net.*;
import java.util.*;


/*La classe Thread du package java.lang est celle qui doit impérativement
*être dérivée pour qu'une classe puisse être considérée comme un Thread et donc, exécutable en parallèle.
Cette classe concrète implémente l'interface Runnable.
Le code que vous désirez voir exécuté lors de l'activation doit donc être placé dans la méthode run() vue précédement.
*/

class ThreadProcessus extends Thread {
private Socket echoSocket;

private String lin;


public ThreadProcessus(Socket echoSocket){

this.echoSocket = echoSocket;

}
public void run(){
try{

BufferedReader in =new BufferedReader
(new InputStreamReader(echoSocket.getInputStream()));
PrintWriter out = new PrintWriter
(echoSocket.getOutputStream(),true /* autoFlush */);
out.println("Bienvenue sur ce server. Tapez BY pour sortir");
BufferedReader stdIn = new BufferedReader( new
InputStreamReader(System.in));
boolean done = false;
while(!done){
// c'est ici que le serveur recupere le message client
String line = in.readLine();
System.out.println("ECHO: " + line);
if(line == null) done = true;
else {
//out.println("Echo : " + line) ;
lin = stdIn.readLine();
out.println("Serveur :" + lin) ;
if (line.trim().equals("BY"))
done = true;
}
}
echoSocket.close();
}
catch (Exception e) { System.out.println(e);}
}
}




Page genérée en 0.2875 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL | Actualité ADSL | Deligo | Appareil photo | Commande Au Volant
Creative Commons
Message Boards and Forums Directory