IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Comment procéder pour l'envoi d'un fichier par socket ?


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 121
    Points
    121
    Par défaut Comment procéder pour l'envoi d'un fichier par socket ?
    Salut,

    J'ai réalisé un tchat avec la la bibliothèque "winsock2.h", et je voudrait y ajouter un transfert de fichier.

    Je me demandait comme procéder pour l'envoi du fichier, il est bien évident que le fichier doit être fragmenté pour passer par le TCP/IP (car le TCP/IP limite l'envoi à 65535octets de donnée).
    Mais si j'envoi tout les paquets à la suite, ils n'arriveront pas forcement dans le même ordre chez le destinataire, car en TCP/IP chaques paquets peuvent prendre un chemin différent, comment faire pour régler ce problème.

    Savez vous comment fonctionnent un transfert de fichier dans tous les logiciels actuels ?

    Merci de m'aider

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    TCP se charge de réordonner les paquets, c'est en UDP que tu n'as pas de garantie d'ordre d'arrivée. Pour la taille des paquets, ben tu transmets petits bouts par petit bout.
    Windows possède une fonctions spécifique optimisée : TransmitFile:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/transmitfile_2.asp
    tu lui donnes la socket et le fichier ouvert, elle s'occupe du reste.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Windows possède une fonctions spécifique optimisée : TransmitFile:
    Oui je sais mais cette fonction ne marche sous Win98.

    Sinon pour l'ordre d'arrivé des paquets le TCP gère les paquet de 65535 octets et pas plus, si on envoi un paquet de cette taille le paquet sera fragmenté pour être envoyé et reconstruit par le client (donc la pas de problème d'ordre d'arrivé, je suppose que c'est ce que tu voulait dire par "TCP se charge de réordonner les paquets")

    Mais moi je veut savoir comment ça se passe si on envoi plusieurs paquets de 65535octets à la suite, car vu que ce sont de paquet différents le TCP ne peut pas les réordonner et comme chaques paquet peut prendre un chemin différent, il y des risques qu'ils n'arrvient pas dans l'ordre, je me trompe?

    Aussi il me faudrait un moyen de savoir si le paquet à été envoyé avant d'envoyer le suivant car si j'envoi tout les paquets d'un coup c'est la RAM qui se charge.

    Merci de m'aider

    EDIT: Je vient de voir qu'il y a un forum pour le "Développement réseaux", dsl d'avoir posté ici.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    Y'a pas de paquet en TCP, tu confonds avec UDP. En interne il organise tes données en trames, mais c'est transparent. Si tu fais 4 écritures sur ta socket, le client recevra les données peut être en 4 fois, peut être en une seule, peut être en 10 fois. Mais tout sera dans l'ordre : c'est le but de TCP.

Discussions similaires

  1. Comment faire pour un envoi automatique de mail dans access
    Par chpierrot dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/06/2008, 13h45
  2. Réponses: 11
    Dernier message: 19/11/2006, 12h45
  3. Envoi d'un fichier par socket
    Par Aleksis dans le forum C++
    Réponses: 12
    Dernier message: 12/08/2006, 05h10
  4. [Joomla!] Comment procéder pour miggrer/évoluer Site Internet
    Par papouAlain dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 23/02/2006, 10h31
  5. [XSLT] Comment procéder pour gérer des langues ?
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/03/2005, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo