Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Allocation de port de connexion dynamiquement [ Archives / Au secours ] (linupat)

jeudi 6 mai 2004 à 15:52:48 | Allocation de port de connexion dynamiquement

linupat


Bonjour
Je souhaite réaliser un serveur pouvant acceuillir une infinité de client (de l'ordre du résonnable). Les clients pouront interroger le serveur en m^me temps et disposeront chacun d'une connexion unique (port différant).
Je sais quand langage on peut alloué des ports dynamiquement avec la commande bind(...), et je voudrais faire la même chose en Java.....
Le problème est que je n'ai quasiment pas trouvé de doc ou exemple traitant de se sujet alors si quelqu'un peut m'expliquer comment on fait ou une doc faite moi signe

jeudi 6 mai 2004 à 16:05:14 | Re : Allocation de port de connexion dynamiquement

safisoft


je X que dans une tel situation t'as pas besoin d'alouer à chaque client un port distint (c pas pratique du tout) mais tu peux les connecter tous sur le même port et créer pur chacun un process (Trhead) qui va communiquer avec lui.
plusieurs port ne servirront en rien puisqu'il y a pas de vrais parallélisme. un port est assai suffisant pour le pseudo parallèlisme!
Ok?
sinon tu pourra generer à chaque fois un entier sur lequel tu vas créer ta ServerSocket, mais le client aussi doit conaitre cet entier avant qu'il soit connecté!! Je vois pa que c pratique!!

vendredi 7 mai 2004 à 07:51:49 | explication

linupat


En langage C il est possible par l'intermédiaire de la commande bind d'avoir une allocation dynamique d'un port. Biensur il ya au début un port de connexion déterminé...... Je veux pas que mes clients dialogue sur le même port pour qu'il ne puisse pas voir à partir d'un client se que transmet un autre client............
SI non j'avais pensé à cette autre solution que tu propose......

vendredi 7 mai 2004 à 09:38:30 | Re : Allocation de port de connexion dynamiquement

kirua12


En Java toutes les opérations qu'on doit faire en C (définition de la socket, bind ...) sont encapsulées dans la Socket.
Tu as 2 solutions :
soit tu crées autant de Socket que nécessaires chacune sur un port différent (c'est pénible, nombre limité de clients ...)
soit tu crées une ServerSocket qui écoute sur un port et qui fait l'allocation dynamique (comportement habituel de tous les serveurs). C'est Java et l'OS qui se chargent de ça, tu ne peux rien spécifier sur les ports utilisés. Je pense que c'est la meilleure solution et c'est aussi la plus répandue

vendredi 7 mai 2004 à 11:27:00 | si j'ai bien compris

linupat

il faut que je définise manuelle un port pour chacun de mes client. Ce qui veut dire que j'aurais un port qui me servira à rediriger mes client sur un port libre!!!
il y a pas une fonction java qui s'occupe de la redirection de la connexion et qui m'affrnchie de tous ce protocol (si non je sais ce qu'il me reste à faire!!)???

vendredi 7 mai 2004 à 14:33:46 | Re : Allocation de port de connexion dynamiquement

kirua12


Je comprends pas ton pb. Pourquoi veux tu définir manuellement un port différent pour chacun des clients ?
La ServerSocket fait ce travail. Elle écoute sur un port et quand un client se connecte, crée une nouvelle socket sur un autre port.

vendredi 7 mai 2004 à 14:57:40 | extrait du code

linuxpat

je te donne un extrait de mon code

1er class serveur
/**
* Thread de gestion des connexions.
*/
public void run()
{
//Comment Creation de la socket du serveur
ServerSocket servSock = null;
try {
servSock = new ServerSocket(port);

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//boucle infini
while (true)
{
//on accepte toute les connexion
Socket socket = null;
try {
socket = servSock.accept();
///serv=socket;
//System.out.println(socket+"\n");
//creation de l'objet connexion
new Connexion(socket, this);
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
}

}

2eme class connexion
/**
* Constructeur de connexion.
* @param sock socket de connexion.
* @param serv serveur.
*/
public Connexion(Socket sock, Serveur serv){
try{
this.sock = sock;
this.serv = serv;
//Buffer d'entrée
in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
//Buffer de sortie
out = new PrintStream(sock.getOutputStream());
//Démarage du Thread
new Thread(this).start();
//Création de l'objet reception
new Recepteur(serv, in, this);
}
catch (IOException ioe){
System.out.println("Probleme ouverture de flux");
}
}

3eme class
public Recepteur(Serveur serv, BufferedReader in, Connexion connect)
{
this.in = in;
this.serv = serv;
this.connect = connect;

new Thread(this).start();
}

voilà mon problème actuellement est que mes clients on l'echo l'écho de tous ce qui transiste sur le réseau.

vendredi 7 mai 2004 à 15:59:18 | Mmmmm

linupat

Peut tu m'expliquer comment initialiser mon out pour qu'il n'interragise pas sur tous mes clients???


samedi 8 mai 2004 à 09:54:35 | Re : Allocation de port de connexion dynamiquement

kirua12


J'ai testé ton code (simple écho du message envoyé) et j'ai pas de pb de communication entre les clients (chaque client est indépendant)
J'ai eu juste un pb lors de la création et du démarrage des threads. Au lieu de créer les threads dans le constructeur, il faut le faire par l'appelant.

Au lieu de faire ça

//Dans le constructeur de Connexion
new Thread(this).start();


il faut faire

//Dans Serveur
new Thread(new Connexion(socket, this)).start();


Voilà pour moi ça marche très bien

lundi 10 mai 2004 à 08:39:34 | ok, pourquoi pas!!

linupat

En faite mon pble est pas que mes clients ne sont pas indépendant, mes je reçois l'echo des messages du serveur sur le mauvais client (c le premier client connecté qui reçois tous les message).
Je pose la question si sa vient pas de l'init de mes flus d'entrée et de sortie????


1 2

Cette discussion est classé dans : port, serveur, connexion, dynamiquement, allocation


Répondre à ce message

Sujets en rapport avec ce message

connexion a un serveur irc [ par damiendumas ] salut !Maintenant que j'ai installé JBuilder, je peux travailler.Je suis en train de créer un bot enfin j'essaye, le seul truc qu'il me manque c'est c Problème de connexion avec UDP [ par patbloup ] Voilà je souhaite me faire un client/serveur UDP, rien de plus simple!!! Mais voilà je trouve pas mal de source sur le Web ou les Exceptions du à la c AIE AIE AIE ->probleme de connexion [ par Frouf85 ] Bonjour,Je développe une application client serveur qui devrait par la suite sur internet. Une application cliente se connecte à une application serve Questions sur les serveurs java [ par Zephiroth ] Bonjours à tous !! j'aimerais qq petites réponses aux questions existentielles que je me pose :p 1)Est-il possible d'implémenter autre chose que des s connexion SSL [ par darktigrou ] Bonjour j'ai un problème sur une application de videosurveillance java!Elle fonctionne actuellement grâce à des sockets classiques, le problème vien d java/j2ee [ par adnane1 ] Bonjour;j'aimerais savoir est ce qu'un serveur d'application(par exemple:tomcat) peut a lui seul gerer les connexions a la base de donnée.c-à-d parame Connexion à un serveur. [ par EPS32HAY ] Bonjour ,à tous,je crée actuellement une petite application JAVA dans laquelle je dois me connecter à un serveur nommé toto.Ce serveur demande à la co [JAVA] Serveur - Client connexion [ par Lem001 ] Voila j'essais de faire un petit prog du style msn, pour communiquer.J'ai ma classe GUI serveur, qui lorsqu'on click sur un bouton appel une methode d problème avec les socket en java (Connection timed out) [ par aLCHMEY ] Bonjour   V Probleme de connexion JDBC avec APPLET [ par Volfield ] Bonjour, je réalise une applet qui doit se connecter sur un serveur de BDD mysql distant.Quand je fais les test sur mon easyphp, pas de problème.Quand


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,33 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.