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 :

Envoyer un fichier en TCP d'un server a un client avec un certain debit et ..


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Envoyer un fichier en TCP d'un server a un client avec un certain debit et ..
    Bonjour a tous,
    je voudrais tout d'abord remercier tous les participants de ce forum qui offrent une aide bien precieuse.^^

    Sinon pour mon probleme, je souhaiterais donc envoyer, en TCP, un fichier d'un server a un client avec un certain debit en kb/s et ensuite tester le taux de reception effectif pour le client.

    Je vois comment envoyer un fichier (File, FileInputStream,FileChannel) mais ensuite c'est plus difficile de trouver comment controler son debit de sortie et d'entree sur la socket..

    Quelqu'aurait-il une idee?
    Merci d'avance.
    V.

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Rebonjour,..
    donc maintenant j'ai reussi a creer le lien fichier socket server / socket client fichier.
    Mais j'ai un probleme de coordination .. Comment faire pour que le server reste en attente le temps que le client ait lu l'integralite du flux de stream venant de la Socketchannel avec la methode read(Buffer) ?

    En effet apres avoir realise la methode write(Buffer) sur la SocketChannel du serveur, bah le serveur se termine tout simplement.....

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    J'ai encore avance dans mon probleme. Maintenant le transfert de fichier a lair de marcher mais j'ai besoin d'utiliser des byteBuffer de taille énorme^^

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    En fait y a un buffer bien rempli du cote du client et un client preque vide du cote client...
    Il semble que le client ne puisse pas recevoir une quantite trop grande de buffer a la fois.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    C'est bon le transfert de fichier est bien coordonne ...
    Il fallait ouvrir un 2e port TCP pour faire passer des read et des write a des endroits strategiques du programme, pour savoir quand envoyer les donnees.

    Bon il reste plus qu a moduler le debit du server et a tester le debit du client..
    Quelqu'un a une idee^^ ( ou je continue mon petit monologue )

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Moi j'ai une idée

    Dans ta boucle de lecture du fichier et d'écriture dans le flux de sortie :

    Pour un débit a 20ko/s par exemple :

    - Tu créer ton buffer de lecture de 20ko.
    - Tu le passe en paramètre de ta méthode read().
    - Thread.sleep(1000). ( tu attends une seconde)

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    ok mais j'ai juste besoin de faire ça quand j'écris du fichier vers le buffer, pas besoin de le faire au niveau de la socket, non?

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    ok finalement j'ai fait le sleep sur la socket.
    transfertSocketServer(byteB,sc); //transfert bytes from buffer to socket
    try {sleep(1000);}
    catch (InterruptedException ex) {System.out.println("interrupted exception ");}

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Oui moi j'aurai dit juste à l'ecriture dans le buffer.

    Si ça marche comme tu fais alors tant mieux

Discussions similaires

  1. envoyer un fichier sur un serveur tcp.
    Par ihih45 dans le forum Protocoles
    Réponses: 10
    Dernier message: 14/08/2015, 03h37
  2. Envoyer un fichier par TCP
    Par invictus25 dans le forum Débuter
    Réponses: 0
    Dernier message: 05/05/2011, 11h27
  3. Envoyer un fichier par TCP/IP
    Par slimdre dans le forum C++Builder
    Réponses: 10
    Dernier message: 24/01/2011, 10h37
  4. Envoyer un fichier par TCP
    Par jejeapollo dans le forum Langage
    Réponses: 1
    Dernier message: 27/07/2010, 18h21
  5. Réponses: 3
    Dernier message: 04/03/2008, 09h17

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