Communications udp en java

Communications udp en java - Java - Programmation

Marsh Posté le 15-05-2003 à 00:46:13    

salut a tous,
 
j'ai un ptit prob avec les communications udp en java.  
lorsqu'on envoie un message UDP par socket à  une machine (port + ip) et  qu'il n'y a pas de socket ki attend sur la machine distante, y'a pas d'erreur ki est levée ? en effet je sais pas comment détecter le fait  que la machine ne répond pas en face.
s'il n'y a pas d'erreur  qui est levée.. mettre un timout d'une certaine durée est-ce une bonne solution ?

Reply

Marsh Posté le 15-05-2003 à 00:46:13   

Reply

Marsh Posté le 15-05-2003 à 08:21:07    

pifou_234 a écrit :

salut a tous,
 
j'ai un ptit prob avec les communications udp en java.  
lorsqu'on envoie un message UDP par socket à  une machine (port + ip) et  qu'il n'y a pas de socket ki attend sur la machine distante, y'a pas d'erreur ki est levée ? en effet je sais pas comment détecter le fait  que la machine ne répond pas en face.
s'il n'y a pas d'erreur  qui est levée.. mettre un timout d'une certaine durée est-ce une bonne solution ?


 
c'est par nature du protocole tout simplement. UDP est un protocole sans acquis, utilisé nottaement pour faire du streaming de media (audio/video) là ou un perte relativement faible est acceptable, comparé aux perfs.
 
Donc envoyer un paquet UDP c'est un peu comme envoyer une bouteille à la mer, tu ne sais pas si ca va arriver ou non.
 
Mettre un timeout ne te servira strictement à rien, sauf si tu attends une réponse en retour du serveur.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-05-2003 à 08:54:47    

A mon avis tu doit avoir un protocol supérieur (de plus haut niveau) que udp et c la que tu doit faire du timeout, mais peu être que tcp est plus adapté dans ton cas... si la non-réactivité est un paramêtre à considérer c tcp qui semble adapté... (fait du rmi alors... ;-) )

Reply

Marsh Posté le 15-05-2003 à 09:53:11    

masked_vengefull a écrit :

A mon avis tu doit avoir un protocol supérieur (de plus haut niveau) que udp et c la que tu doit faire du timeout, mais peu être que tcp est plus adapté dans ton cas... si la non-réactivité est un paramêtre à considérer c tcp qui semble adapté... (fait du rmi alors... ;-) )


 
RMI ?? Euh, une simple socket ne suffit plus maintenant ?


Message édité par senternal le 15-05-2003 à 09:53:28
Reply

Marsh Posté le 15-05-2003 à 16:32:54    

en fait je suis obligé d'utilisé UDP dans  mon programme...  
l'idée c'est que j'ai un processus A sur une  machine qui donne l'adresse et l'îp des serveurs qui se sont inscrits aux clients qui le lui demande...
je dois considérer le fait qu'un serveur pour s'inscrire (donc qu'un client ait son adresse par A)  mais que le serveur puissse tomber en panne entre deux.. et donc si le client n'a jamais de réponse du serveur... ben y va redemander à A une autre adresse de serveur pour le service demandé...
j'ai l'impression qu'en utilisant que UDP je dois utiliser le time out.. ouala..

Reply

Marsh Posté le 15-05-2003 à 16:36:46    

pifou_234 a écrit :

en fait je suis obligé d'utilisé UDP dans  mon programme...  
l'idée c'est que j'ai un processus A sur une  machine qui donne l'adresse et l'îp des serveurs qui se sont inscrits aux clients qui le lui demande...
je dois considérer le fait qu'un serveur pour s'inscrire (donc qu'un client ait son adresse par A)  mais que le serveur puissse tomber en panne entre deux.. et donc si le client n'a jamais de réponse du serveur... ben y va redemander à A une autre adresse de serveur pour le service demandé...
j'ai l'impression qu'en utilisant que UDP je dois utiliser le time out.. ouala..
 


 
les sockets standard (tcp j entend) peuvent faire l'affaire  dans ton cas , jvois pas ou est le probleme

Reply

Marsh Posté le 15-05-2003 à 18:50:04    

j'ai trouvé la réponse à mon prob..
les socket possède une méthode qui s'appelle setSoTimeout()
on fixe un temps en milliseconde.
si rien n'arrive une exception est levée.
comme ce j'ai pas un receive qui attend un temps infini pour rien

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed