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

Entrée/Sortie Java Discussion :

Envoi de fichier par socket


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut Envoi de fichier par socket
    Bonjour,

    Pour envoyer un fichier par socket, j'utilise pour l'instant une méthode simple mais lente : le "byte to byte".
    J'aimerais augmenter la cadence du débit.
    Quelqu'un a une idée ?

    J'ai pensé à faire un envoi par ligne du fichier.
    Cependant, dans ce cas, je ne peux plus me baser sur le retour "-1" pour savoir quand arrêté la lecture puisque ce n'est plus des entiers que je lirais mais des chaînes.
    Je pourrais utiliser une chaîne arbitraire sur la ligne située après la dernière ligne du fichier envoyé, pour justement indiquer la fin du fichier. Néanmoins, il faudrait que celle ci ne soit pas contenue dans le fichier.
    Donc je préfère éviter.

    Si quelqu'un a une idée, même farfelu je suis preneur

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il n'y a rien de sorcier tu as principalement deux solutions :

    • Soit tu fermes la socket à la fin de l'envoi, et dans ce cas tu peux envoyer tous le fichier sans t'embêter (le programme client n'aura qu'à lire jusqu'à qu'il arrive à la fin de la socket).
    • Soit tu veux conserver la socket ouverte après l'envoi (pour envoyer autre chose par exemple), et dans ce cas il faut envoyer la taille des données qui vont suivre (ex: tu vas envoyer une chaine de 256 bytes, donc tu envois un int valant 256 suivi des 256 bytes, puis tu recommences pour une nouvelle chaine ou -1 lorsque tu as fini...).


    a++

    PS : Juste une remarque : plutôt que d'envoyer un fichier ligne par ligne, envoi le en le lisant par bloc d'une certaine taille. Ce sera surement plus performant

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut
    Merci pour ta réponse bien complète !
    Je vais tester la seconde solution.
    Je reviens après le test

    Edit : niquel ! Merci bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. envoi/reception fichier par socket
    Par rezuz dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 19/06/2010, 16h52
  2. Envoi de Fichier par Socket
    Par devalender dans le forum WinDev
    Réponses: 2
    Dernier message: 20/06/2008, 12h59
  3. Envoie de fichier par socket
    Par eracius dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 05/10/2007, 11h21
  4. Envoi de fichier par socket
    Par dr_octopus74 dans le forum Réseau
    Réponses: 42
    Dernier message: 19/01/2007, 17h59
  5. [Débutant] Envoi de fichier par socket
    Par zapho dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 26/05/2004, 18h58

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