[Question] Socket (résolu)

Socket (résolu) [Question] - C++ - Programmation

Marsh Posté le 17-03-2004 à 19:49:06    

Bonsoir,
 
   Je rencontre une petite difficulté avec une gestion de socket. Je programme une application cliente qui execute la succession de fonctions suivantes :
 
1) socket(...)
2) bind(...)
3) connect(...)
4) send(...)
5) recv(...)
6) shutdown(...)
7) (socket)close()
 
   Globalement, le transfer de données par le réseau se passe bien.
 
   A l'étapte 2), je force le client à utiliser un socket particulier (local) afin de bien maitriser les ports utilisés par mon application cliente. Je fais pareil au niveau de l'application serveur. Dans ce dernier cas, c'est logique et ca marche bien evidemment.  
 
   Le problème est que lorsque je répete cette succession d'instructions rapidement.... ca coince un peu. Le premier bind fait encore effet lorsque le deuxieme tente de s'executer. DRonc, le second bind plante et tout mon service réseau est à genou.
 
   Toutes suggestions ou remarques sont les bienvenues !
 
   Forcer le port d'un client réseau est il si "déconnant" ou existe t il des solutions (tourner sur plusieurs ports par exemple pour laisser le temps aux bind de se "défairent" tout seuls).
 
Cordialement,
   XteR.


Message édité par xterminhate le 17-03-2004 à 20:17:43
Reply

Marsh Posté le 17-03-2004 à 19:49:06   

Reply

Marsh Posté le 17-03-2004 à 20:08:36    

Pourquoi tu "répètes ces instructions rapidement" :??:  
Généralement, le client se connecte au début, et reste connecté. Il n'y a que les étapes 4 et 5 qui sont répétées.
 
Pour le bind, est-ce vraiment utile sur le client ? Le plus simple est de laisser le système trouver un port disponible.
De plus, avec ta méthode, tu ne pourrais pas avoir 2 clients sur la même machine [:figti]


Message édité par mrbebert le 17-03-2004 à 20:09:09
Reply

Marsh Posté le 17-03-2004 à 20:14:47    

Mon application serveur relache (close) la connexion immédiatement apres la premiere transaction, donc mon application cliente execute également un close pour terminer un cycle correctement.
 
Je suis en phase de test unitaire. L'un des tests est rebouclé de sorte a "secouer" l'application. Cela n'est finallement pas tres représentatif de l'utilisation finale. Le time out sur le bind est peut etre suffisant en condition normale d'utilisation.
 
Enfin, l'application cliente intègre plusieurs services réseaux de type client dont un est unique et est bindé à un port donné : celui qui me pose pb.
 
Cela dit, je crois que je vais laisser le système allouer un port libre.... plutot que m'embeter à faire une gestion de socket compliquée sans interet.
 
Merci,
  Xter.

Reply

Sujets relatifs:

Leave a Replay

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