Bonjour,
J'ai développé une architecture Client/Serveur de transferts de fichiers, grosso modo. Lorsque le client reçoit les données envoyées par le serveur, un fichier est ouvert en écriture. Pour ouvrir ce fichier, je passe par la classe ofstream. Un problème survient lorsque le client ferme ce fichier via la méthode close() : Il semblerait qu'il s'agisse en fait d'une exception. J'ai tenté un try{}catch{}, mais je n'ai pas réussi à relever cette exception, le code à l'intérieur du catch{} n'ayant pas été lu (?).
Ce qui me dérange, c'est que cela semble survenir aléatoirement :
- Lorsque j'exécute l'application sans le mode débogage
- Lorsque le client effectue sa deuxième demande de transfert : Lors de la première demande, tout se déroule bien... je n'ai pas de rapport de Visual Studio (VS). Lors de la seconde demande de transfert concernant le même fichier, l'application plante. VS désigne une exception win32 non gérée.
Je ne comprends pas vraiment ce qui cloche. Je ne déclare qu'une fois mon ofstream, l'ouvre et le referme quand il le faut... conditions sans lesquelles, aucun essai n'aurait le résultat escompté. Ce comportement m'échappe vraiment.
Auriez-vous quelque(s) suggestion(s) ?
Il semblerait que le même soucis survienne avec l'utilisation de FILE *, toujours au moment de la fermeture du fichier (fclose()). Le problème me parait complètement bizarre, d'autant plus qu'il arrive vraiment trop aléatoirement maintenant : au premier transfert, ou au second, ou au troisième, ou...
Je n'arrive pas à attraper l'exception. Le débogueur m'indique une "violation d'accès lors de la lecture". Je ne vois pas de quoi il s'agit, et surtout je ne vois pas pourquoi ça marcherait parfois seulement...
Partager