j'ai 2 applications toutes simples, une qui fait serveur (avec un thread qui
écoute sur un port) et une qui fait client (qui envoi des infos sur le port
donné que le serveur affiche ensuite).
Cela fonctionne très bien, mais impossible de connecter un deuxième client.
En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on dit
à un des deux d'envoyer une info, peut importe d'où cela vient, le serveur
l'affiche.
Mon problème actuel est que le serveur affiche seulement ce que le premier
client connecté envoi.
(ps : le client est également un thread qui attend que l'utilisateur saisise
qq chose au clavier et valide, pour l'envoyer au seveur).
Avez vous une idée de solutions si vous avez compris mon pb ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas Delsaux
Le 16.11 2003, Benoît PITAULT s'est levé et s'est dit : "tiens, si j'écrivais aux mecs de fr.comp.lang.java ?"
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un thread qui écoute sur un port) et une qui fait client (qui envoi des infos sur le port donné que le serveur affiche ensuite). Cela fonctionne très bien, mais impossible de connecter un deuxième client. En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on dit à un des deux d'envoyer une info, peut importe d'où cela vient, le serveur l'affiche.
Avez vous une idée de solutions si vous avez compris mon pb ?
Ton problème est relativement courant, et il existe plusieurs manières de le traiter. Je ne vais me concentrer que sur la plus simple.
Il me semble (mais c'est à confirmer) que la plupart du temps, les sockets Java sont exclusives (c'est-à-dire qu'une socket peut seulement communiquer avec une seule autre machine). Pour éviter ça, le plus simple est peut-être de créer une socket par client. Pour cela, ta Socket serveur doit fournir à chaque client se connectant le numéro d'un port libre sur lequel continuer la communication, ce qui donne le schéma de communication suivant : - le serveur démarre une socket sur un "well known port", par exemple 6666. - un client se connecte sur ce port et se contente d'envoyer un message "HELLO". - le serveur lui renvoie le numéro d'une socket libre sur lequel le client peut se rebrancher. Dans le même temps, il a créé les objets nécessaires à la communication sur ce port (dans notre cas, on va dire 9999). - le client se reconnecte sur 9999, et la communication réelle commence.
Je crois que ce genre de mécanisme est assez généralement utilisé. Toute fois, je viens de constater que, dans le package java.nio.channels, il existe une classe SocketChannel qui doit sûrement faire ce genre de choses.
Merci.
-- Nicolas Delsaux "Il ne faut pas désespérer les imbéciles, avec un peu d'entraînement on peut en faire des militaires." Pierre Desproges
Le 16.11 2003, Benoît PITAULT s'est levé et s'est dit : "tiens, si
j'écrivais aux mecs de fr.comp.lang.java ?"
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un
thread qui écoute sur un port) et une qui fait client (qui envoi des
infos sur le port donné que le serveur affiche ensuite).
Cela fonctionne très bien, mais impossible de connecter un deuxième
client. En effet je souhaiterais avoir 2 clients ou + qui tourne et
lorsque l'on dit à un des deux d'envoyer une info, peut importe d'où
cela vient, le serveur l'affiche.
Avez vous une idée de solutions si vous avez compris mon pb ?
Ton problème est relativement courant, et il existe plusieurs manières de
le traiter. Je ne vais me concentrer que sur la plus simple.
Il me semble (mais c'est à confirmer) que la plupart du temps, les
sockets Java sont exclusives (c'est-à-dire qu'une socket peut seulement
communiquer avec une seule autre machine). Pour éviter ça, le plus simple
est peut-être de créer une socket par client.
Pour cela, ta Socket serveur doit fournir à chaque client se connectant
le numéro d'un port libre sur lequel continuer la communication, ce qui
donne le schéma de communication suivant :
- le serveur démarre une socket sur un "well known port", par exemple
6666.
- un client se connecte sur ce port et se contente d'envoyer un message
"HELLO".
- le serveur lui renvoie le numéro d'une socket libre sur lequel le
client peut se rebrancher. Dans le même temps, il a créé les objets
nécessaires à la communication sur ce port (dans notre cas, on va dire
9999).
- le client se reconnecte sur 9999, et la communication réelle commence.
Je crois que ce genre de mécanisme est assez généralement utilisé.
Toute fois, je viens de constater que, dans le package java.nio.channels,
il existe une classe SocketChannel qui doit sûrement faire ce genre de
choses.
Merci.
--
Nicolas Delsaux
"Il ne faut pas désespérer les imbéciles, avec un peu d'entraînement on
peut en faire des militaires."
Pierre Desproges
Le 16.11 2003, Benoît PITAULT s'est levé et s'est dit : "tiens, si j'écrivais aux mecs de fr.comp.lang.java ?"
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un thread qui écoute sur un port) et une qui fait client (qui envoi des infos sur le port donné que le serveur affiche ensuite). Cela fonctionne très bien, mais impossible de connecter un deuxième client. En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on dit à un des deux d'envoyer une info, peut importe d'où cela vient, le serveur l'affiche.
Avez vous une idée de solutions si vous avez compris mon pb ?
Ton problème est relativement courant, et il existe plusieurs manières de le traiter. Je ne vais me concentrer que sur la plus simple.
Il me semble (mais c'est à confirmer) que la plupart du temps, les sockets Java sont exclusives (c'est-à-dire qu'une socket peut seulement communiquer avec une seule autre machine). Pour éviter ça, le plus simple est peut-être de créer une socket par client. Pour cela, ta Socket serveur doit fournir à chaque client se connectant le numéro d'un port libre sur lequel continuer la communication, ce qui donne le schéma de communication suivant : - le serveur démarre une socket sur un "well known port", par exemple 6666. - un client se connecte sur ce port et se contente d'envoyer un message "HELLO". - le serveur lui renvoie le numéro d'une socket libre sur lequel le client peut se rebrancher. Dans le même temps, il a créé les objets nécessaires à la communication sur ce port (dans notre cas, on va dire 9999). - le client se reconnecte sur 9999, et la communication réelle commence.
Je crois que ce genre de mécanisme est assez généralement utilisé. Toute fois, je viens de constater que, dans le package java.nio.channels, il existe une classe SocketChannel qui doit sûrement faire ce genre de choses.
Merci.
-- Nicolas Delsaux "Il ne faut pas désespérer les imbéciles, avec un peu d'entraînement on peut en faire des militaires." Pierre Desproges
vclassine
"Benoît PITAULT" wrote in message news:<3fb7b09b$0$226$...
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un thread qui écoute sur un port) et une qui fait client (qui envoi des infos sur le port donné que le serveur affiche ensuite). Cela fonctionne très bien, mais impossible de connecter un deuxième client. En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on dit à un des deux d'envoyer une info, peut importe d'où cela vient, le serveur l'affiche. Mon problème actuel est que le serveur affiche seulement ce que le premier client connecté envoi. (ps : le client est également un thread qui attend que l'utilisateur saisise qq chose au clavier et valide, pour l'envoyer au seveur).
Avez vous une idée de solutions si vous avez compris mon pb ?
ça manque cruellement d'info.
Sur ce dont je dispose:
Tu communiques avec des socket semble-t-il. Est ce que par hasard tu n'oublierais pas de libèrer le socket après que le premier est envoyé son message et/ou est-ce que tu n'oublierais pas de relancer l'attente de connexion après la déconnexion du premier client?
"Benoît PITAULT" <benoit.pitault@free.fr_NOSPAM> wrote in message news:<3fb7b09b$0$226$626a54ce@news.free.fr>...
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un thread qui
écoute sur un port) et une qui fait client (qui envoi des infos sur le port
donné que le serveur affiche ensuite).
Cela fonctionne très bien, mais impossible de connecter un deuxième client.
En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on dit
à un des deux d'envoyer une info, peut importe d'où cela vient, le serveur
l'affiche.
Mon problème actuel est que le serveur affiche seulement ce que le premier
client connecté envoi.
(ps : le client est également un thread qui attend que l'utilisateur saisise
qq chose au clavier et valide, pour l'envoyer au seveur).
Avez vous une idée de solutions si vous avez compris mon pb ?
ça manque cruellement d'info.
Sur ce dont je dispose:
Tu communiques avec des socket semble-t-il. Est ce que par hasard tu
n'oublierais pas de libèrer le socket après que le premier est envoyé
son message et/ou est-ce que tu n'oublierais pas de relancer l'attente
de connexion après la déconnexion du premier client?
"Benoît PITAULT" wrote in message news:<3fb7b09b$0$226$...
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un thread qui écoute sur un port) et une qui fait client (qui envoi des infos sur le port donné que le serveur affiche ensuite). Cela fonctionne très bien, mais impossible de connecter un deuxième client. En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on dit à un des deux d'envoyer une info, peut importe d'où cela vient, le serveur l'affiche. Mon problème actuel est que le serveur affiche seulement ce que le premier client connecté envoi. (ps : le client est également un thread qui attend que l'utilisateur saisise qq chose au clavier et valide, pour l'envoyer au seveur).
Avez vous une idée de solutions si vous avez compris mon pb ?
ça manque cruellement d'info.
Sur ce dont je dispose:
Tu communiques avec des socket semble-t-il. Est ce que par hasard tu n'oublierais pas de libèrer le socket après que le premier est envoyé son message et/ou est-ce que tu n'oublierais pas de relancer l'attente de connexion après la déconnexion du premier client?
henelfa
"Benoît PITAULT" a écrit dans le message de news: 3fb7b09b$0$226$
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un thread qui
écoute sur un port) et une qui fait client (qui envoi des infos sur le port
donné que le serveur affiche ensuite). Cela fonctionne très bien, mais impossible de connecter un deuxième client.
En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on dit
à un des deux d'envoyer une info, peut importe d'où cela vient, le serveur l'affiche. Mon problème actuel est que le serveur affiche seulement ce que le premier client connecté envoi. (ps : le client est également un thread qui attend que l'utilisateur saisise
qq chose au clavier et valide, pour l'envoyer au seveur).
Avez vous une idée de solutions si vous avez compris mon pb ?
Merci.
Le principe est de reboucler systematiquement sur la methode accept() juste apres lancement session de com avec un client. On n'attend pas la fin de com avec client en cours pour discuter avec le suivant. J'ai un code faisant cela servant de base a un TP d'info que je peux envoyer si necessaire. A+
"Benoît PITAULT" <benoit.pitault@free.fr_NOSPAM> a écrit dans le message de
news: 3fb7b09b$0$226$626a54ce@news.free.fr...
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un thread
qui
écoute sur un port) et une qui fait client (qui envoi des infos sur le
port
donné que le serveur affiche ensuite).
Cela fonctionne très bien, mais impossible de connecter un deuxième
client.
En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on
dit
à un des deux d'envoyer une info, peut importe d'où cela vient, le serveur
l'affiche.
Mon problème actuel est que le serveur affiche seulement ce que le premier
client connecté envoi.
(ps : le client est également un thread qui attend que l'utilisateur
saisise
qq chose au clavier et valide, pour l'envoyer au seveur).
Avez vous une idée de solutions si vous avez compris mon pb ?
Merci.
Le principe est de reboucler systematiquement sur la methode accept() juste
apres lancement session de com avec un client. On n'attend pas la fin de
com avec client en cours pour discuter avec le suivant. J'ai un code faisant
cela servant de base a un TP d'info que je peux envoyer si necessaire. A+
"Benoît PITAULT" a écrit dans le message de news: 3fb7b09b$0$226$
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un thread qui
écoute sur un port) et une qui fait client (qui envoi des infos sur le port
donné que le serveur affiche ensuite). Cela fonctionne très bien, mais impossible de connecter un deuxième client.
En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on dit
à un des deux d'envoyer une info, peut importe d'où cela vient, le serveur l'affiche. Mon problème actuel est que le serveur affiche seulement ce que le premier client connecté envoi. (ps : le client est également un thread qui attend que l'utilisateur saisise
qq chose au clavier et valide, pour l'envoyer au seveur).
Avez vous une idée de solutions si vous avez compris mon pb ?
Merci.
Le principe est de reboucler systematiquement sur la methode accept() juste apres lancement session de com avec un client. On n'attend pas la fin de com avec client en cours pour discuter avec le suivant. J'ai un code faisant cela servant de base a un TP d'info que je peux envoyer si necessaire. A+
Benoît PITAULT
salut.
merci pour les conseils. si ça te dérange pas pour l'exemple du code, je veux bien ...
"henelfa" a écrit dans le message de news:3fba99ef$0$2779$
"Benoît PITAULT" a écrit dans le message de
news: 3fb7b09b$0$226$
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un thread qui
écoute sur un port) et une qui fait client (qui envoi des infos sur le port
donné que le serveur affiche ensuite). Cela fonctionne très bien, mais impossible de connecter un deuxième client.
En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on dit
à un des deux d'envoyer une info, peut importe d'où cela vient, le serveur
l'affiche. Mon problème actuel est que le serveur affiche seulement ce que le premier
client connecté envoi. (ps : le client est également un thread qui attend que l'utilisateur saisise
qq chose au clavier et valide, pour l'envoyer au seveur).
Avez vous une idée de solutions si vous avez compris mon pb ?
Merci.
Le principe est de reboucler systematiquement sur la methode accept() juste
apres lancement session de com avec un client. On n'attend pas la fin de com avec client en cours pour discuter avec le suivant. J'ai un code faisant
cela servant de base a un TP d'info que je peux envoyer si necessaire. A+
salut.
merci pour les conseils. si ça te dérange pas pour l'exemple du code, je
veux bien ...
"henelfa" <henelfa@free.fr> a écrit dans le message de
news:3fba99ef$0$2779$626a54ce@news.free.fr...
"Benoît PITAULT" <benoit.pitault@free.fr_NOSPAM> a écrit dans le message
de
news: 3fb7b09b$0$226$626a54ce@news.free.fr...
Bonjour,
j'ai 2 applications toutes simples, une qui fait serveur (avec un thread
qui
écoute sur un port) et une qui fait client (qui envoi des infos sur le
port
donné que le serveur affiche ensuite).
Cela fonctionne très bien, mais impossible de connecter un deuxième
client.
En effet je souhaiterais avoir 2 clients ou + qui tourne et lorsque l'on
dit
à un des deux d'envoyer une info, peut importe d'où cela vient, le
serveur
l'affiche.
Mon problème actuel est que le serveur affiche seulement ce que le
premier
client connecté envoi.
(ps : le client est également un thread qui attend que l'utilisateur
saisise
qq chose au clavier et valide, pour l'envoyer au seveur).
Avez vous une idée de solutions si vous avez compris mon pb ?
Merci.
Le principe est de reboucler systematiquement sur la methode accept()
juste
apres lancement session de com avec un client. On n'attend pas la fin de
com avec client en cours pour discuter avec le suivant. J'ai un code
faisant
cela servant de base a un TP d'info que je peux envoyer si necessaire. A+