nanard1402
Messages postés3Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention19 février 2009 19 févr. 2009 à 10:23
Bonjour à tous,
Désolé pour le premier message fausse manip.
Je vous explique le contexte : j'ai un programme qui contact un 2éme programme via des sockets tcp pour lui demander de générer un son wav. Pour certaines raisons, la communication avec le programme qui génére le son doit être unidirectionnelle : Je peut demander à ce programme de générer le son, mais ce programme ne peut pas me répondre.
Donc voila ce qui se passe : mon programme demande au générateur de son de créer un fichier wav. Ensuite, mon programme doit récupérer le fichier wav pour l'envoyer sur le réseau. Le problême est que le générateur de son n'a pas la possiblité de me dire à quel moment il a fini de générer le son.
J'ai commencé par me basé sur la date de modification du fichier mais cette date est mise à jour dès que le générateur de son commence à modifier le fichier wav et donc, je récupère un fichier wav auquel il manque des données.
Je me suis ensuite basé à la fois sur la date de mofdification et sur la taille du fichier avec le code suivant :
Toutes les fonctions utilisées dans cette méthode fonctionnent.
getNow() -> Récupére le temps actuel
getLastModifTime(fileName)->Récupére la date de dernière modification du fichier.
isLower(date1,date2)->Compare deux dates entre elles
getSize(fileName)->Récupère la taille du fichier.
Même avec cette méthode, je récupère un fichier wav incomplet.
Qualqu'un saurait pourquoi? Y a t-il une autre manière de réaliser ça ?
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 20132 19 févr. 2009 à 11:24
Si c'est toi qui écrit également le générateur de son, une méthode simple serait qu'il crée un fichier quelconque lorsqu'il a fini de créer le .wav. Ton programme n'a plus qu'à tester l'existence de ce fichier et à l'effacer après récupération du .wav.
Sinon ton appel à sleep(0.1) me semble curieux, la durée de sleep est normalement en millisecondes.