bonjour,
je developpe une appli Client/Server sous win98 se et Visual C++ 6.0.
je dois faire du transfert de fichier (de taille variable 500Kb a
50Mb+).
j'ai decide d'utiliser les sockets asynchrones (class CAsyncSocket).
le transfert de fichiers se fait par packets de taille fixe (0x1000
bytes).
pour chaque packets, j'ai une petite entete utile (numero packet
transmis, crc, ...).
j'utilise la fonction Send() de CAsyncSocket pour la transmission. A
reception de l'error WSAEWOULDBLOCK, je pose mes donnees dans une
file.
la creation de la socket est faite pour default (... | FD_WRITE |
...), ainsi
des que la socket est dispo en ecriture, l'appel a la fonction
OnSend() est
effectue, et je transmets les elements de la file.
le probleme: les packets recus par le serveur sont dans le desordre,
pourquoi???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jmr
"seb" a écrit dans le message de news:
bonjour, je developpe une appli Client/Server sous win98 se et Visual C++ 6.0. je dois faire du transfert de fichier (de taille variable 500Kb a 50Mb+). j'ai decide d'utiliser les sockets asynchrones (class CAsyncSocket). le transfert de fichiers se fait par packets de taille fixe (0x1000 bytes). pour chaque packets, j'ai une petite entete utile (numero packet transmis, crc, ...). j'utilise la fonction Send() de CAsyncSocket pour la transmission. A reception de l'error WSAEWOULDBLOCK, je pose mes donnees dans une file. la creation de la socket est faite pour default (... | FD_WRITE | ...), ainsi des que la socket est dispo en ecriture, l'appel a la fonction OnSend() est effectue, et je transmets les elements de la file.
le probleme: les packets recus par le serveur sont dans le desordre, pourquoi???
merci pour vos reponses.
Socket en SOCK_DGRAM ou en SOCK_STREAM ?
Vu, ce que tu dis, il devrait s'agir de SOCK_DGRAM .. Donc UDP et ce protocole ne garantie aucunement que les paquets sont recu dans l'ordre d'émission ...
Jean
"seb" <sebastien.brejotbarsacq@acmetec.fr> a écrit dans le message de
news:687820db.0308190051.36ccce73@posting.google.com...
bonjour,
je developpe une appli Client/Server sous win98 se et Visual C++ 6.0.
je dois faire du transfert de fichier (de taille variable 500Kb a
50Mb+).
j'ai decide d'utiliser les sockets asynchrones (class CAsyncSocket).
le transfert de fichiers se fait par packets de taille fixe (0x1000
bytes).
pour chaque packets, j'ai une petite entete utile (numero packet
transmis, crc, ...).
j'utilise la fonction Send() de CAsyncSocket pour la transmission. A
reception de l'error WSAEWOULDBLOCK, je pose mes donnees dans une
file.
la creation de la socket est faite pour default (... | FD_WRITE |
...), ainsi
des que la socket est dispo en ecriture, l'appel a la fonction
OnSend() est
effectue, et je transmets les elements de la file.
le probleme: les packets recus par le serveur sont dans le desordre,
pourquoi???
merci pour vos reponses.
Socket en SOCK_DGRAM ou en SOCK_STREAM ?
Vu, ce que tu dis, il devrait s'agir de SOCK_DGRAM .. Donc UDP et ce
protocole ne garantie aucunement que les paquets sont recu dans l'ordre
d'émission ...
bonjour, je developpe une appli Client/Server sous win98 se et Visual C++ 6.0. je dois faire du transfert de fichier (de taille variable 500Kb a 50Mb+). j'ai decide d'utiliser les sockets asynchrones (class CAsyncSocket). le transfert de fichiers se fait par packets de taille fixe (0x1000 bytes). pour chaque packets, j'ai une petite entete utile (numero packet transmis, crc, ...). j'utilise la fonction Send() de CAsyncSocket pour la transmission. A reception de l'error WSAEWOULDBLOCK, je pose mes donnees dans une file. la creation de la socket est faite pour default (... | FD_WRITE | ...), ainsi des que la socket est dispo en ecriture, l'appel a la fonction OnSend() est effectue, et je transmets les elements de la file.
le probleme: les packets recus par le serveur sont dans le desordre, pourquoi???
merci pour vos reponses.
Socket en SOCK_DGRAM ou en SOCK_STREAM ?
Vu, ce que tu dis, il devrait s'agir de SOCK_DGRAM .. Donc UDP et ce protocole ne garantie aucunement que les paquets sont recu dans l'ordre d'émission ...
Jean
sebastien.brejotbarsacq
merci jean pour ta reponse.
socket en SOCK_STREAM. en ce qui concerne la transmission de fichier, je l'envoi par paquets de 0x1000 octets, donc je boucle tant que le fichier ou le mapping n'est pas envoye entierement. le probleme c'est que un send n'est pas termine et un autre commence, donc je mets les donnees dans une FIFO, pour les transmettre dans l'ordre. alors pourquoi l'aplli distante ne les recoit pas dans le meme ordre ?
.seb.
merci jean pour ta reponse.
socket en SOCK_STREAM.
en ce qui concerne la transmission de fichier, je l'envoi par paquets de
0x1000 octets, donc je boucle tant que le fichier ou le mapping n'est pas
envoye entierement.
le probleme c'est que un send n'est pas termine et un autre commence, donc
je mets les donnees dans une FIFO, pour les transmettre dans l'ordre.
alors pourquoi l'aplli distante ne les recoit pas dans le meme ordre ?
socket en SOCK_STREAM. en ce qui concerne la transmission de fichier, je l'envoi par paquets de 0x1000 octets, donc je boucle tant que le fichier ou le mapping n'est pas envoye entierement. le probleme c'est que un send n'est pas termine et un autre commence, donc je mets les donnees dans une FIFO, pour les transmettre dans l'ordre. alors pourquoi l'aplli distante ne les recoit pas dans le meme ordre ?