Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3058 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] socket: faire tourner plusieurs serveurs sur le meme port

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] socket: faire tourner plusieurs serveurs sur le meme port

n°568557
tanguy
Posté le 17-11-2003 à 01:45:54  profilanswer
 

Comment faire tourner plusieurs applications qui ecoutent sur le meme port en mode serveur ?
genre imaginer plusieurs serveurs HTTP qui ecoutent sur le meme port 80 sur la meme machine et les faire communiquer entre eux.
 
Pour le moment j'ai pas trouve mieux de lancer un process dans mon OS puis de simuler un autre OS avec wmware pour lancer un second process et pouvoir ainsi tester mon application puisque j'ai pas d'acces a d'autre machines en reseau.
 
Connaissez vous une solution moins contraignante au niveau de l'OS ou de Java qui permette de faire ca ? une simulation de sockets quoi :D
 
Sinon tant pis je continue avec wmware ou alors je charge un fichier de conf pour modifier les ports de mes sockets, mais ca implique que je pourrais pas tester plus de 2 applications en meme temps facilement.

mood
Publicité
Posté le 17-11-2003 à 01:45:54  profilanswer
 

n°568573
nraynaud
lol
Posté le 17-11-2003 à 01:59:15  profilanswer
 

normalement on peut pas, puisque justement le port est l'identifiant de l'application.
Une feinte courante pour ce problème consiste à mettre un mini-serveur sur le port, qui va répartir les requêtes aux bonne applications, à partir des critères à définir.
 
Mais c'est une mauvaise idée : un port -> une application.


---------------
trainoo.com, c'est fini
n°568621
tanguy
Posté le 17-11-2003 à 02:47:37  profilanswer
 

nraynaud a écrit :


Mais c'est une mauvaise idée : un port -> une application.


 
c'est pour tester mon application parceque ma machine n'est pas en reseau.
Ou je peux trouver ce miniserveur? parceque wmware c'est lent et ca bouffe une place monstre

n°568825
nraynaud
lol
Posté le 17-11-2003 à 12:08:12  profilanswer
 

tu t'en fous, tu dois probablement avoir toute la partie réseau installée dans ton OS, tu peux donc ouvrir le serveur sur le port 80 de ta machine et ouvrir le navigateur sur la même machine pointé vers http://localhost:80/
 
Par contre je ne comprends pas pourquoi tu veux avoir plusieurs serveurs en même temps sur le même port.


---------------
trainoo.com, c'est fini
n°570828
tanguy
Posté le 19-11-2003 à 15:59:57  profilanswer
 

Imagines un logiciel de chat ou tu as une socket server sur un port qui tourne en background et qui attend des messages, et une partie client qui envoie des messages.
 
Imagine tu as une seule machine chez toi qui n'est pas connecte sur Internet donc pas moyen de lancer une instance du programme sur un machine A et une autre instance sur une machine B.
 
Comment tu fais pour TESTER le programme (le faire communiquer donc au moins 2 instances) a part modifier les ports ou lancer un emulateur (wmware) avec une 2e pile tcp-ip ?
 
Je sais tres bien que l'on peut faire http://localhost:80/ sur une machine non connecte a Internet :)

n°570860
nraynaud
lol
Posté le 19-11-2003 à 16:24:03  profilanswer
 

tanguy a écrit :

Imagines un logiciel de chat ou tu as une socket server sur un port qui tourne en background et qui attend des messages, et une partie client qui envoie des messages.

Oulà, il faut laisser les machines se débrouiller pour les clients dans la mesure du possible.
 
si tu as un client/serveur tout bête :
tu fais le "bind" du serveur sur un port connu (ce sera le point de rendez-vous des machines) mais dans les clients, il faut ouvrir tes sockets vers le serveur sans préciser le port par lequel tu sors, le système en trouvera un tout seul (en fonction de la place libre), ça t'évite tout un tas de problèmes.
 
si ce sont des "serveurs" qui parlent entre eux :
Je ne suis pas sur d'avoir compris, mais si tu as des programmes symétriques (style des serveurs IRC qui se répartisseent les messages qu'ils reçoivent chacun de leurs clients respectifs), rajoute une option de ligne de commande à ton programme qui lui dira qu'il doit utiliser les ports passés en paramètres (celui qu'il doit écouter pour ses clients, celui qu'il doit écouter de la part de l'autre serveur et celui auquel il doit contacter l'autre serveur).


---------------
trainoo.com, c'est fini
n°570908
tanguy
Posté le 19-11-2003 à 17:08:32  profilanswer
 

nraynaud a écrit :


rajoute une option de ligne de commande à ton programme qui lui dira qu'il doit utiliser les ports passés en paramètres.


 
J'avais pas pense a ca: je lance plusieurs fois le meme serveur sur different ports, mais bon c'est pas la solution parfaite. La solution parfaite est celle qui represente le mieux la realite.
 
Bon j'ai une autre analogie. un logiciel P2P (decentralise, sans serveur) quand tu chat avec ou echange un fichier il y a un serveur qui ecoute en background sur un port pour recevoir des commandes, des messages de chat ect... puis aussi une partie client pour envoyer des commandes (GET filename...) et des messages de chat. Maintenant imagine que tu tests ce logiciel sur une seule machine (donc une pile tcp-ip), comment tu fais?
 
Le truc c'est que si tu as des liens sur cette histoire de mini-serveur ca m'interesse (ton premier post dans ce topic).

n°570915
nraynaud
lol
Posté le 19-11-2003 à 17:16:33  profilanswer
 

tanguy a écrit :


Le truc c'est que si tu as des liens sur cette histoire de mini-serveur ca m'interesse (ton premier post dans ce topic).

Non, tu va trouver des trucs sur la répartition de charge mais pas sur ça.
En plus c'est pas adapté à ton cas.
Passe par des sockets unix pour tes tests ?


---------------
trainoo.com, c'est fini
n°570936
tanguy
Posté le 19-11-2003 à 17:30:52  profilanswer
 

> Passe par des sockets unix pour tes tests ?
 
ils ont quoi de speciaux les sockets unix? ou tu parles de l'instruction select()? comment pluguer ca sur mon programme fait en Java ?

n°570951
nraynaud
lol
Posté le 19-11-2003 à 17:43:13  profilanswer
 

tanguy a écrit :

ils ont quoi de speciaux les sockets unix? ou tu parles de l'instruction select()? comment pluguer ca sur mon programme fait en Java ?

Je parle pas de select, qui n'a rien à voir.
Les sockets unix passent par le système de fichier pour le nommage (ce qui t'intéresse) et sont plus rapides (ça tu t'en fout) et ne marchent pas au travers du réseau (c'est une conséquence du fait que ça t'intéresse) .


---------------
trainoo.com, c'est fini

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] socket: faire tourner plusieurs serveurs sur le meme port

 

Sujets relatifs
[java] c'est à n'y rien comprendre !socket et envoi de structure
[JAVA] java 3D : tutoriaux[java] newbye : rentrer des valeurs dans mon programme à l'exécution
PORT EN ECOUTEFaire tourner une app sur une machine sans VS .net
[Java] Tri d'un vecteurplusieurs commandes avec CreateObject("WScript.Shell" ) et methode run
[Java] [DEFI] Voir les partie de quake en cours....[JAVA] Packager un jar contenant des jars utilisant des jars , etc ...
Plus de sujets relatifs à : [Java] socket: faire tourner plusieurs serveurs sur le meme port


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR