Fiabiliser transfert par socket - C++ - Programmation
Marsh Posté le 30-01-2005 à 18:41:51
c'est toi qui te vautre. Il y a des vérifications d'erreurs dans toute la pile réseau.
Juste comme ça tu ferais bien de lire la documentation de recv ... tu foires complètement le cas limite. Résultat, comme les BMP sont codés à l'envers (premier pixel -> derniers octets du fichier) et ben tu fous tout en l'air.
En clair : RTFM
Marsh Posté le 30-01-2005 à 18:52:16
Taz a écrit : c'est toi qui te vautre. Il y a des vérifications d'erreurs dans toute la pile réseau. |
Que signifie RTFM lol.
Mais si comme tu le dis que les BMP sont codés à l'envers (je suis d'accord) pourquoi quand je teste le serveur et le client sur mon PC cela marche?
De toute facon l'image n'arrive meme pas à l'envers mais completement en vrac.
Quand tu dis "tu foires complètement le cas limite" pourrais tu expliciter au lieu de rester vague s'il te plait.
Merci de ton aide.
Marsh Posté le 30-01-2005 à 19:38:47
/me se tappe contre la tête contre le mur ...
Ça m'apprendra à donner des explications
allez, lis la documentation de recv et ne reviens pas avant.
Marsh Posté le 30-01-2005 à 19:48:25
Sans vouloir être indélicat tu crois que je viendrais poser une question sans avoir lu la doc?
Donc bon ce genre de réponse ne font pas avancer le chmilblick
Marsh Posté le 30-01-2005 à 19:58:26
non t'as pas lu la doc
sinon t'écrirais pas ça
# recv(sock_client,transfert, TAILLE_BUF, 0);
# //on ecrit le contenu dans le fichier
# fwrite(transfert,1, TAILLE_BUF, fichier);
alors fais pas comme si c'était moi l'idiot
Marsh Posté le 30-01-2005 à 20:20:05
J'ai résolu mon problème.
Enfin ca marche mais ce genre de réponses qui tournent autours du pot ne font rien avancer.
Voila a bon entendeur salut.
Marsh Posté le 30-01-2005 à 20:26:38
Taz a écrit : donc t'as pas lu la documentation de recv ... |
Le problème ne venait pas du recv.
J'ai tapé ca.
Code :
|
Sinon bravo pour l'histoire de l'ordre des pixels etc qui était hors sujet !!
Marsh Posté le 30-01-2005 à 20:35:07
là je reste sans voix.
Comme par hasard en utilisant correctement recv, ça marche. Et tu oses dire que que le problème n'avait pas de rapport de recv ...
Maintenant, quand 'octetsRecus < TAILLE_BUF', ce qui est le cas lors du dernier transfert, devine ce qu'il y as dans 'transfert' ... les octetsRecus premiers bytes sont bons, le reste, c'est des déchets. Et toi tu écris ces déchets. Résultat le BMP reconstitué a plus de pixel que prévu (TAILLE_BUF - octetsRecus) et les déchets que tu as récupéré constitue les premiers pixels de ton image et foute le bronx.
Alors la prochaine fois tu seras sympa de :
- faire ce qu'on te dit. Si je te dis de regarder l'emploi de recv, c'est pas pour te faire chier
- faire marcher ta boîte à cerveau avant de dire plus bêtises.
Mais tout compte fait, y aura pas de prochaine fois. Y a des fois je m'en veux vraiment de filer un coup de main.
Marsh Posté le 30-01-2005 à 20:40:42
Pour etre bref je te reproche rien.
Mais si tu viens m'aider soit concret et pas répondre va voir la documentation car cette réponse je sait la trouver seule.
C'est tout ce que je te repoche.
Car tu me donnais des réponses sans vraiment en donner.
Sur ce sans rancune.
Marsh Posté le 30-01-2005 à 20:45:30
Désolé, mais avec un niveau CP, tu vois un prototype
int recv(int s, void *buf, int len, unsigned int flags);
qu'est-ce que tu fais ? et bien tu regardes à quoi servent les paramètres et ce que renvoie la fonction.
VALEUR RENVOYÉE
Ces fonctions renvoient le nombre doctets reçus si elles réussissent, ou -1 si elles échouent, auquel cas errno contient le code derreur.
Je vois pas quoi rajouté. Donc la documentation tu l'as pas trouvée. Ou tu l'as pas lu. C'est pas la peine de dire que j'ai pas été assez concret : j'allais pas non plus te coller la documentation
Marsh Posté le 30-01-2005 à 20:56:17
Tu m'aurais juste dit fait gaffe à ce que renvoie la fonction et c'etait réglé.
Elle ne renvoie pas toujours la taille de ton buffer et voila c'etait réglé.
reponse bref rapide et conrète.
Voila sur ce le débas est clos.
Désolé de ne pas avoir un niveau de CP.
Melon style ++ et merci quand même
Marsh Posté le 30-01-2005 à 21:05:11
Pourquoi je t'ai renvoyé vers l'intégralité de la documentation ? Pour pas que ce genre d'erreur se reproduise : tu es toi même passé à fond sur la documentation (mais alors vraiment), tu peux pas me reprocher de pas te donner une bribe de doc, alors que c'est exactement ce qui t'as amené à te planter.
Marsh Posté le 30-01-2005 à 18:18:14
Salut.
Je vais vous expliquer mon petit problème.
Je crée un client et un serveur.
Des que le serveur recoit une demande il envoie un fichier en utilisant un thread vers le client.
Seulement quand je teste sur mon PC tout se passe bien.
Dès que je teste les deux programmes sur deux ordis différents du réseau le client recoit le fichier mais l'image est toute décalée (elle ressemble plus à rien).
Pourquoi un tel phénomène quand on test sur le réseau et le net?
Comment y remédier.