J'essaye d'établir une communication UDP entre un client et un serveur.
Le problème, c'est que tout fonctionne bien pour le premier envoi, mais
impossible d'envoyer d'autres données si celles-ci ne sont pas envoyées
dans une boucle (voir code ci-dessous).
Voici la classe du client:
// -------------------------------------------------------------
public class clientDiscardUDP {
Le serveur est tout ce qui a de plus classique. J'ai testé avec
différents codes de serveurs UDP et le résultat est le même.
J'arrive bien à voir le premier texte saisi mais si je relance le
client, le second texte n'est pas envoyé. Par contre, il y a bien
quelque chose qui arrive au serveur mais c'est un message de 0 octet :-(
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
Bruno Tignac
Stéphane wrote:
Bonjour,
J'essaye d'établir une communication UDP entre un client et un serveur.
Le problème, c'est que tout fonctionne bien pour le premier envoi, mais impossible d'envoyer d'autres données si celles-ci ne sont pas envoyées dans une boucle (voir code ci-dessous).
Voici la classe du client: // ------------------------------------------------------------- public class clientDiscardUDP {
Le serveur est tout ce qui a de plus classique. J'ai testé avec différents codes de serveurs UDP et le résultat est le même.
J'arrive bien à voir le premier texte saisi mais si je relance le client, le second texte n'est pas envoyé. Par contre, il y a bien quelque chose qui arrive au serveur mais c'est un message de 0 octet :-(
J'utilise une JRE 1.4.2_04 de Sun.
Une suggestion ?
Merci Stéphane
essaie en mettant la creation de la socket dans le while
Stéphane wrote:
Bonjour,
J'essaye d'établir une communication UDP entre un client et un serveur.
Le problème, c'est que tout fonctionne bien pour le premier envoi, mais
impossible d'envoyer d'autres données si celles-ci ne sont pas envoyées
dans une boucle (voir code ci-dessous).
Voici la classe du client:
// -------------------------------------------------------------
public class clientDiscardUDP {
Le serveur est tout ce qui a de plus classique. J'ai testé avec
différents codes de serveurs UDP et le résultat est le même.
J'arrive bien à voir le premier texte saisi mais si je relance le
client, le second texte n'est pas envoyé. Par contre, il y a bien
quelque chose qui arrive au serveur mais c'est un message de 0 octet :-(
J'utilise une JRE 1.4.2_04 de Sun.
Une suggestion ?
Merci
Stéphane
essaie en mettant la creation de la socket dans le while
J'essaye d'établir une communication UDP entre un client et un serveur.
Le problème, c'est que tout fonctionne bien pour le premier envoi, mais impossible d'envoyer d'autres données si celles-ci ne sont pas envoyées dans une boucle (voir code ci-dessous).
Voici la classe du client: // ------------------------------------------------------------- public class clientDiscardUDP {
Le serveur est tout ce qui a de plus classique. J'ai testé avec différents codes de serveurs UDP et le résultat est le même.
J'arrive bien à voir le premier texte saisi mais si je relance le client, le second texte n'est pas envoyé. Par contre, il y a bien quelque chose qui arrive au serveur mais c'est un message de 0 octet :-(
J'utilise une JRE 1.4.2_04 de Sun.
Une suggestion ?
Merci Stéphane
essaie en mettant la creation de la socket dans le while
Stephane
Bonjour,
essaie en mettant la creation de la socket dans le while
Comme je l'avais indiqué, tout fonctionne bien si je mets une boucle while mais ce que je veux, c'est justement ne faire qu'un envoi (donc pas de boucle while) puis sortir du programme client.
Mais dans mon cas, si je relance un tel client sans relancer le serveur, le serveur ne reçoit qu'un message de 0 octets. Avec les tests que j'ai pu faire, le problème vient du client mais je n'arrive pas à voir ou...
Merci.
Stéphane
-- Utilisez notre serveur de news 'news.foorum.com' depuis n'importe ou. Plus d'info sur : http://nnrpinfo.go.foorum.fr/
Bonjour,
essaie en mettant la creation de la socket dans le while
Comme je l'avais indiqué, tout fonctionne bien si je mets une boucle while mais
ce que je veux, c'est justement ne faire qu'un envoi (donc pas de boucle while)
puis sortir du programme client.
Mais dans mon cas, si je relance un tel client sans relancer le serveur, le
serveur ne reçoit qu'un message de 0 octets. Avec les tests que j'ai pu faire,
le problème vient du client mais je n'arrive pas à voir ou...
Merci.
Stéphane
--
Utilisez notre serveur de news 'news.foorum.com' depuis n'importe ou.
Plus d'info sur : http://nnrpinfo.go.foorum.fr/
essaie en mettant la creation de la socket dans le while
Comme je l'avais indiqué, tout fonctionne bien si je mets une boucle while mais ce que je veux, c'est justement ne faire qu'un envoi (donc pas de boucle while) puis sortir du programme client.
Mais dans mon cas, si je relance un tel client sans relancer le serveur, le serveur ne reçoit qu'un message de 0 octets. Avec les tests que j'ai pu faire, le problème vient du client mais je n'arrive pas à voir ou...
Merci.
Stéphane
-- Utilisez notre serveur de news 'news.foorum.com' depuis n'importe ou. Plus d'info sur : http://nnrpinfo.go.foorum.fr/
Stéphane
Bonjour,
essaie en mettant la creation de la socket dans le while
Comme je l'avais indiqué, tout fonctionne bien si je mets une boucle while mais ce que je veux, c'est justement ne faire qu'un envoi (donc pas de boucle while) puis sortir du programme client.
Mais dans mon cas, si je relance un tel client sans relancer le serveur, le serveur ne reçoit qu'un message de 0 octets. Avec les tests que j'ai pu faire, le problème vient du client mais je n'arrive pas à voir ou...
Merci.
Stéphane
Bonjour,
essaie en mettant la creation de la socket dans le while
Comme je l'avais indiqué, tout fonctionne bien si je mets une boucle
while mais ce que je veux, c'est justement ne faire qu'un envoi (donc
pas de boucle while) puis sortir du programme client.
Mais dans mon cas, si je relance un tel client sans relancer le serveur,
le serveur ne reçoit qu'un message de 0 octets. Avec les tests que j'ai
pu faire, le problème vient du client mais je n'arrive pas à voir ou...
essaie en mettant la creation de la socket dans le while
Comme je l'avais indiqué, tout fonctionne bien si je mets une boucle while mais ce que je veux, c'est justement ne faire qu'un envoi (donc pas de boucle while) puis sortir du programme client.
Mais dans mon cas, si je relance un tel client sans relancer le serveur, le serveur ne reçoit qu'un message de 0 octets. Avec les tests que j'ai pu faire, le problème vient du client mais je n'arrive pas à voir ou...
Merci.
Stéphane
TestMan
Essayes :
public class clientDiscardUDP {
public static void main(String[] args) {
try { InetAddress serveur = InetAddress.getByName("localhost"); BufferedReader saisieUtilisateur = new BufferedReader( new InputStreamReader(System.in)); DatagramSocket leSocket = new DatagramSocket(serveur, 9);
Logiquement ça marchera...celà vient tout simplement du fait que comme le dit la javadoc pour le constructeur sans paramètre :
"Constructs a datagram socket and binds it to any available port on the local host machine. The socket will be bound to the wildcard address, an IP address chosen by the kernel."
En clair, le socket etant lié sur un port aléatoire, il en a rien à faire plus tard que tu lui assigne un port de destination car il est déjà lié. Et le packet envoyé le sera vers un point ou il n'y a pas forcement le bon serveur ...
Merci à la Javadoc ;)
A+ TM
Stéphane wrote:
Bonjour,
J'essaye d'établir une communication UDP entre un client et un serveur.
Le problème, c'est que tout fonctionne bien pour le premier envoi, mais impossible d'envoyer d'autres données si celles-ci ne sont pas envoyées dans une boucle (voir code ci-dessous).
Voici la classe du client: // ------------------------------------------------------------- public class clientDiscardUDP {
public static void main(String[] args) {
try { InetAddress serveur = InetAddress.getByName("localhost"); BufferedReader saisieUtilisateur = new BufferedReader( new InputStreamReader(System.in)); DatagramSocket leSocket = new DatagramSocket();
Le serveur est tout ce qui a de plus classique. J'ai testé avec différents codes de serveurs UDP et le résultat est le même.
J'arrive bien à voir le premier texte saisi mais si je relance le client, le second texte n'est pas envoyé. Par contre, il y a bien quelque chose qui arrive au serveur mais c'est un message de 0 octet :-(
J'utilise une JRE 1.4.2_04 de Sun.
Une suggestion ?
Merci Stéphane
Essayes :
public class clientDiscardUDP {
public static void main(String[] args) {
try {
InetAddress serveur = InetAddress.getByName("localhost");
BufferedReader saisieUtilisateur = new BufferedReader(
new InputStreamReader(System.in));
DatagramSocket leSocket = new DatagramSocket(serveur, 9);
Logiquement ça marchera...celà vient tout simplement du fait que comme
le dit la javadoc pour le constructeur sans paramètre :
"Constructs a datagram socket and binds it to any available port on the
local host machine. The socket will be bound to the wildcard address,
an IP address chosen by the kernel."
En clair, le socket etant lié sur un port aléatoire, il en a rien à
faire plus tard que tu lui assigne un port de destination car il est
déjà lié. Et le packet envoyé le sera vers un point ou il n'y a pas
forcement le bon serveur ...
Merci à la Javadoc ;)
A+
TM
Stéphane wrote:
Bonjour,
J'essaye d'établir une communication UDP entre un client et un serveur.
Le problème, c'est que tout fonctionne bien pour le premier envoi, mais
impossible d'envoyer d'autres données si celles-ci ne sont pas envoyées
dans une boucle (voir code ci-dessous).
Voici la classe du client:
// -------------------------------------------------------------
public class clientDiscardUDP {
public static void main(String[] args) {
try {
InetAddress serveur = InetAddress.getByName("localhost");
BufferedReader saisieUtilisateur = new BufferedReader(
new InputStreamReader(System.in));
DatagramSocket leSocket = new DatagramSocket();
Le serveur est tout ce qui a de plus classique. J'ai testé avec
différents codes de serveurs UDP et le résultat est le même.
J'arrive bien à voir le premier texte saisi mais si je relance le
client, le second texte n'est pas envoyé. Par contre, il y a bien
quelque chose qui arrive au serveur mais c'est un message de 0 octet :-(
Logiquement ça marchera...celà vient tout simplement du fait que comme le dit la javadoc pour le constructeur sans paramètre :
"Constructs a datagram socket and binds it to any available port on the local host machine. The socket will be bound to the wildcard address, an IP address chosen by the kernel."
En clair, le socket etant lié sur un port aléatoire, il en a rien à faire plus tard que tu lui assigne un port de destination car il est déjà lié. Et le packet envoyé le sera vers un point ou il n'y a pas forcement le bon serveur ...
Merci à la Javadoc ;)
A+ TM
Stéphane wrote:
Bonjour,
J'essaye d'établir une communication UDP entre un client et un serveur.
Le problème, c'est que tout fonctionne bien pour le premier envoi, mais impossible d'envoyer d'autres données si celles-ci ne sont pas envoyées dans une boucle (voir code ci-dessous).
Voici la classe du client: // ------------------------------------------------------------- public class clientDiscardUDP {
public static void main(String[] args) {
try { InetAddress serveur = InetAddress.getByName("localhost"); BufferedReader saisieUtilisateur = new BufferedReader( new InputStreamReader(System.in)); DatagramSocket leSocket = new DatagramSocket();
Le serveur est tout ce qui a de plus classique. J'ai testé avec différents codes de serveurs UDP et le résultat est le même.
J'arrive bien à voir le premier texte saisi mais si je relance le client, le second texte n'est pas envoyé. Par contre, il y a bien quelque chose qui arrive au serveur mais c'est un message de 0 octet :-(
J'utilise une JRE 1.4.2_04 de Sun.
Une suggestion ?
Merci Stéphane
Stéphane
TestMan wrote:
Essayes :
...
Logiquement ça marchera...celà vient tout simplement du fait que comme le dit la javadoc pour le constructeur sans paramètre :
Lors de la création du DatagramSocket j'ai inversé le serveur et le port car le constructeur que vous vouliez utiliser n'existe pas.
Cela ne fonctionne pas: "java.net.BindException: Address already in use: Cannot bind".
La machine n'est pas capable d'avoir un serveur sur la socket localhost:9 et un client avec la socket localhost:9. Cela me semble normal.
Stéphane
TestMan wrote:
Essayes :
...
Logiquement ça marchera...celà vient tout simplement du fait que comme
le dit la javadoc pour le constructeur sans paramètre :
Lors de la création du DatagramSocket j'ai inversé le serveur et le port
car le constructeur que vous vouliez utiliser n'existe pas.
Cela ne fonctionne pas: "java.net.BindException: Address already in use:
Cannot bind".
La machine n'est pas capable d'avoir un serveur sur la socket
localhost:9 et un client avec la socket localhost:9. Cela me semble normal.
Logiquement ça marchera...celà vient tout simplement du fait que comme le dit la javadoc pour le constructeur sans paramètre :
"Constructs a datagram socket and binds it to any available port on the local host machine. The socket will be bound to the wildcard address, an IP address chosen by the kernel."
En clair, le socket etant lié sur un port aléatoire, il en a rien à faire plus tard que tu lui assigne un port de destination car il est déjà lié. Et le packet envoyé le sera vers un point ou il n'y a pas forcement le bon serveur ...
Merci à la Javadoc ;)
Attention, tu confonds le port d'écoute de la socket et le port de destination du paquet. Je peux très bien créer une socket écoutant sur le port 12 et envoyer un paquet grâce à cette socket sur le port 345 d'une machine distante. En clair, pour un client UDP, le constructeur de socket vide convient très bien.
Sébastien
TestMan wrote:
Essayes :
public class clientDiscardUDP {
public static void main(String[] args) {
try {
InetAddress serveur = InetAddress.getByName("localhost");
BufferedReader saisieUtilisateur = new BufferedReader(
new InputStreamReader(System.in));
DatagramSocket leSocket = new DatagramSocket(serveur, 9);
Logiquement ça marchera...celà vient tout simplement du fait que comme
le dit la javadoc pour le constructeur sans paramètre :
"Constructs a datagram socket and binds it to any available port on the
local host machine. The socket will be bound to the wildcard address,
an IP address chosen by the kernel."
En clair, le socket etant lié sur un port aléatoire, il en a rien à
faire plus tard que tu lui assigne un port de destination car il est
déjà lié. Et le packet envoyé le sera vers un point ou il n'y a pas
forcement le bon serveur ...
Merci à la Javadoc ;)
Attention, tu confonds le port d'écoute de la socket et le port de destination du paquet.
Je peux très bien créer une socket écoutant sur le port 12 et envoyer un paquet grâce à cette socket
sur le port 345 d'une machine distante.
En clair, pour un client UDP, le constructeur de socket vide convient très bien.
Logiquement ça marchera...celà vient tout simplement du fait que comme le dit la javadoc pour le constructeur sans paramètre :
"Constructs a datagram socket and binds it to any available port on the local host machine. The socket will be bound to the wildcard address, an IP address chosen by the kernel."
En clair, le socket etant lié sur un port aléatoire, il en a rien à faire plus tard que tu lui assigne un port de destination car il est déjà lié. Et le packet envoyé le sera vers un point ou il n'y a pas forcement le bon serveur ...
Merci à la Javadoc ;)
Attention, tu confonds le port d'écoute de la socket et le port de destination du paquet. Je peux très bien créer une socket écoutant sur le port 12 et envoyer un paquet grâce à cette socket sur le port 345 d'une machine distante. En clair, pour un client UDP, le constructeur de socket vide convient très bien.
Sébastien
Sebastien
ton code semble correct... En plus, il n'y a aucune raison pour que le client n'envoie pas le paquet la seconde fois que tu l'éxécutes... pourrais-tu envoyer le code du serveur ?
Sébastien
ton code semble correct...
En plus, il n'y a aucune raison pour que le client n'envoie pas le paquet la seconde fois que tu
l'éxécutes...
pourrais-tu envoyer le code du serveur ?
ton code semble correct... En plus, il n'y a aucune raison pour que le client n'envoie pas le paquet la seconde fois que tu l'éxécutes... pourrais-tu envoyer le code du serveur ?
Sébastien
Stéphane
Sebastien wrote:
Bonjour,
ton code semble correct... En plus, il n'y a aucune raison pour que le client n'envoie pas le paquet la seconde fois que tu l'éxécutes... pourrais-tu envoyer le code du serveur ?
J'ai trouvé semble-t-il le problème: j'ai le firewall logiciel Zone Alarm. Je ne sais pour quelle raison, il filtre mal les trames UDP. Il prend peut-être mes tests pour une "attaque" ?
Toujours est-il qu'en le désactivant le client fonctionne enfin parfaitement.
Merci pour vos contributions.
Stéphane
Sebastien wrote:
Bonjour,
ton code semble correct...
En plus, il n'y a aucune raison pour que le client n'envoie pas le
paquet la seconde fois que tu l'éxécutes...
pourrais-tu envoyer le code du serveur ?
J'ai trouvé semble-t-il le problème: j'ai le firewall logiciel Zone
Alarm. Je ne sais pour quelle raison, il filtre mal les trames UDP. Il
prend peut-être mes tests pour une "attaque" ?
Toujours est-il qu'en le désactivant le client fonctionne enfin
parfaitement.
ton code semble correct... En plus, il n'y a aucune raison pour que le client n'envoie pas le paquet la seconde fois que tu l'éxécutes... pourrais-tu envoyer le code du serveur ?
J'ai trouvé semble-t-il le problème: j'ai le firewall logiciel Zone Alarm. Je ne sais pour quelle raison, il filtre mal les trames UDP. Il prend peut-être mes tests pour une "attaque" ?
Toujours est-il qu'en le désactivant le client fonctionne enfin parfaitement.
Merci pour vos contributions.
Stéphane
Bernard Koninckx
Salut,
Rien à voir avec le sujet (quoi que ...). J'ai déjà entendu d'anciens collègues qui se retrouvaient le soir pour jouer à Quake III Arena et QIII Team Arena qui se sont retrouvés avec des problèmes réseaux quand le serveur ét it lancé à partir d'une machine qui tournait sous Zone Alarm. Le passage à la suit de Norton à corrigé le problème. Visiblement comme tu le dis Zone Alarm, prend certains paquets d'infos comme de attaques alors qu'il ne devraint pas, même si les ports sont disponibles.
Le choix d'un autre FireWall est peut-être d'application, dans ton cas.
Bernard
"Stéphane" a écrit dans le message de news: ce8qn4$2din$
Sebastien wrote:
Bonjour,
ton code semble correct... En plus, il n'y a aucune raison pour que le client n'envoie pas le paquet la seconde fois que tu l'éxécutes... pourrais-tu envoyer le code du serveur ?
J'ai trouvé semble-t-il le problème: j'ai le firewall logiciel Zone Alarm. Je ne sais pour quelle raison, il filtre mal les trames UDP. Il prend peut-être mes tests pour une "attaque" ?
Toujours est-il qu'en le désactivant le client fonctionne enfin parfaitement.
Merci pour vos contributions.
Stéphane
Salut,
Rien à voir avec le sujet (quoi que ...). J'ai déjà entendu d'anciens
collègues qui se retrouvaient le soir pour jouer à Quake III Arena et QIII
Team Arena qui se sont retrouvés avec des problèmes réseaux quand le serveur
ét it lancé à partir d'une machine qui tournait sous Zone Alarm. Le
passage à la suit de Norton à corrigé le problème. Visiblement comme tu le
dis Zone Alarm, prend certains paquets d'infos comme de attaques alors qu'il
ne devraint pas, même si les ports sont disponibles.
Le choix d'un autre FireWall est peut-être d'application, dans ton cas.
Bernard
"Stéphane" <spam_news@freelinuxdev.net> a écrit dans le message de news:
ce8qn4$2din$1@biggoron.nerim.net...
Sebastien wrote:
Bonjour,
ton code semble correct...
En plus, il n'y a aucune raison pour que le client n'envoie pas le
paquet la seconde fois que tu l'éxécutes...
pourrais-tu envoyer le code du serveur ?
J'ai trouvé semble-t-il le problème: j'ai le firewall logiciel Zone
Alarm. Je ne sais pour quelle raison, il filtre mal les trames UDP. Il
prend peut-être mes tests pour une "attaque" ?
Toujours est-il qu'en le désactivant le client fonctionne enfin
parfaitement.
Rien à voir avec le sujet (quoi que ...). J'ai déjà entendu d'anciens collègues qui se retrouvaient le soir pour jouer à Quake III Arena et QIII Team Arena qui se sont retrouvés avec des problèmes réseaux quand le serveur ét it lancé à partir d'une machine qui tournait sous Zone Alarm. Le passage à la suit de Norton à corrigé le problème. Visiblement comme tu le dis Zone Alarm, prend certains paquets d'infos comme de attaques alors qu'il ne devraint pas, même si les ports sont disponibles.
Le choix d'un autre FireWall est peut-être d'application, dans ton cas.
Bernard
"Stéphane" a écrit dans le message de news: ce8qn4$2din$
Sebastien wrote:
Bonjour,
ton code semble correct... En plus, il n'y a aucune raison pour que le client n'envoie pas le paquet la seconde fois que tu l'éxécutes... pourrais-tu envoyer le code du serveur ?
J'ai trouvé semble-t-il le problème: j'ai le firewall logiciel Zone Alarm. Je ne sais pour quelle raison, il filtre mal les trames UDP. Il prend peut-être mes tests pour une "attaque" ?
Toujours est-il qu'en le désactivant le client fonctionne enfin parfaitement.