Lancer plusieurs serveurs
parousky
Messages postés
325
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
pour un projet, je dois assurer une connexion via un protocole TCP entre plusieurs threads. Alors j'ai trois classes serveurs, trois classes clients, et une classe avec une méthode main() qui est censée tout lancer.
Alors j'ai écris ça :
Et s'il y a des méthodes main() dans les classes serveur et client, le fait de d'instancier trois serveurs et trois clients ne devrait pas permettre de lancer la méthode main() ?
Sinon, en écrivant s1.main(args), cela permet de lancer la méthode main() du Serveur1, mais les lignes en dessous ne seront alors pas lues, et je ne pourrais pas lancer les autres serveurs et les autres clients...
J'espère avoir assez bien expliqué le problème ! Pourriez-vous m'aider ?
Merci d'avance !
pour un projet, je dois assurer une connexion via un protocole TCP entre plusieurs threads. Alors j'ai trois classes serveurs, trois classes clients, et une classe avec une méthode main() qui est censée tout lancer.
Alors j'ai écris ça :
public static void main(String[] args) { Serveur1 s1 = new Serveur1(); Serveur2 s2 = new Serveur2(); Serveur3 s3 = new Serveur3(); Client1 c1 = new Client1(); Client2 c2 = new Client2(); Client3 c3 = new Client3(); }
Et s'il y a des méthodes main() dans les classes serveur et client, le fait de d'instancier trois serveurs et trois clients ne devrait pas permettre de lancer la méthode main() ?
Sinon, en écrivant s1.main(args), cela permet de lancer la méthode main() du Serveur1, mais les lignes en dessous ne seront alors pas lues, et je ne pourrais pas lancer les autres serveurs et les autres clients...
J'espère avoir assez bien expliqué le problème ! Pourriez-vous m'aider ?
Merci d'avance !
A voir également:
- Lancer plusieurs serveurs
- Lancer une application au démarrage windows 10 - Guide
- Serveurs dns - Guide
- Fichier batch pour lancer un programme - Guide
- Comment lancer gemini - Accueil - Téléphones
- Liste des serveurs de messagerie - Guide
3 réponses
Bonjour,
Tu peux faire des threads pour lancer les clients en parallèle.
Par contre je ne vois pas l'intérêt de lancer plusieurs serveurs en parallèle.
Tu peux faire des threads pour lancer les clients en parallèle.
Par contre je ne vois pas l'intérêt de lancer plusieurs serveurs en parallèle.
J'ai essayé ton code mais ça ne fonctionne pas... J'ai mis ce bout de code dans ma méthode main(), et j'ai aussi mis un System.out.println("Test"); pour être sûr que je rentre dans la méthode run() et c'est bien le cas !
Mais dans ma classe Client, j'ai une méthode main(), et le simple fait de déclarer un ovjet de type Client comme ton code le fait devrait permettre de lancer la méthode main() de cette classe Client non ?
Parce que moi ce n'est pas le cas. La méthode main() de la classe Client n'est pas lancée...
Vois-tu pourquoi ?
Mais dans ma classe Client, j'ai une méthode main(), et le simple fait de déclarer un ovjet de type Client comme ton code le fait devrait permettre de lancer la méthode main() de cette classe Client non ?
Parce que moi ce n'est pas le cas. La méthode main() de la classe Client n'est pas lancée...
Vois-tu pourquoi ?
Merci ça marche bien mais pour les serveurs seulement. Parce qu'en fait j'aimerais que les clients executent leur code en même temps. Et j'ai utilisé ton bout de code pour faire ça :
Et alors les Clients sont créés, leur méthode s'exécutent, mais les uns après les autres, alors que je voudrais que leur méthodes respectives s'exécutent en même temps.
As-tu une idée pour faire ça ?
Merci d'avance !
new Thread() { public void run() { for(int i=0;i<3;i++) { Clients[i] = new Client(i); String[] args2 = new String[2]; args2[0] = "Toulouse"; args2[1] = "Nantes"; try { Clients[i].main(args2); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }.start();
Et alors les Clients sont créés, leur méthode s'exécutent, mais les uns après les autres, alors que je voudrais que leur méthodes respectives s'exécutent en même temps.
As-tu une idée pour faire ça ?
Merci d'avance !
S'exécuter en même temps, c'est ce que font les Thread. Si tu créés 3 threads clients en parallèle, ça fera 3 actions en parallèle.
Remarque : comme je l'ai dit, main est une méthode static, ça ne sert à rien de créer des objets Client pour lancer son main !
Remarque : comme je l'ai dit, main est une méthode static, ça ne sert à rien de créer des objets Client pour lancer son main !
public class Test { public static void main(String[] args) { for (int i=0; i<3; i++) { new Thread() { public void run() { try { String[] args2 = {"Toulouse","Nantes"}; Client.main(args2); catch (Exception e) { e.printStackTrace(); } } }.start(); } } }
et bien je dois lancer des serveurs différents parce qu'ils ont chacun leur calcul à effectuer et ne renvoient pas la même chose.
Et par contre, utiliser des threads pour lancer les clients en parallèle, comment écris-tu ça en java exactement ?