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

Langage Java Discussion :

[Socket] savoir s'il reste des chose a lire?


Sujet :

Langage Java

  1. #1
    Membre averti Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Points : 417
    Points
    417
    Par défaut [Socket] savoir s'il reste des chose a lire?
    bonjour,
    pour un tp je dois programmer un client/serveur FTP en java.
    J'arrive tres bien a faire mes communications tant que la communication se fait du type :
    1°/ le client envois une requete (1 ligne de commande - ex: user piff62)
    2°/ le serveur repond par en 1 ligne (ex: user ok, password required)

    Mais la j'en suis a implementer la commande LIST, qui permet de lister le contenu du repertoire courant distant.
    Mais la se pose le probleme que je ne sais pas combien de reponse va envoyer le serveur (puisqu'il envois un message par fichier present dans le repertoire)
    Donc cote client je ne sais pas combien de fois je dois aller lire sur la socket?
    Y'a t'il une fonction qui permet de savoir si il reste des choses a lire sur une socket?
    car meme en cherchant sur je n'ai rien trouver
    merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Non tu dois créer ton propre netcode.
    Dans ton cas tu as plusieurs solutions :
    - Passer toutes les informations ( informations de tous les fichiers ) sur une seule ligne en utilisant un caractère de séparation de ton choix.
    - Le serveur en premier le nombre de d'info qu'il va envoyer, ainsi le client lis une première fois ce nombre puis sait ou doit s'arrêter son compteur lors de la boucle.
    - Passer au client un objet ( instance de classe ), contenant toutes les informations ( ex. ArrayList ).
    etc...
    Personnellement, lorsque j'utilise uniquement de l'ascii pour les transferts, c'est la première ou 2ème méthode que j'utilise.

  3. #3
    Membre averti Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Points : 417
    Points
    417
    Par défaut
    merci iohack pour ta reponse,
    j'avais deja mis en place ta premiere solution mais je trouvais pas ca tres "propre" donc je pensais qu'il y a avais surement une autre methode .. apparement non donc je pense que je vais laisser ca comme ca
    En tout cas, je te remercie encore

  4. #4
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Ce n'est pas vraiment très propre dans la mesure où cela alourdit les transferts. Par exemple utiliser de l'ascii pour transférer un booléen, c'est vraiment moyen ( cast, utilisation de bits inutiles etc. ).
    Je pense que la solution la plus propre est de sérialiser les instances d'objets et de les envoyer directement dans le socket via un ObjectOutputStream. Enfin cette méthode nécessite beaucoup trop de précaution pour un gain de performance qui serat au final inutile si l'application est purement pédagogique.

  5. #5
    Membre averti Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Points : 417
    Points
    417
    Par défaut
    Oui c'est clair.
    Le but n'etant pas de faire une application qui sera distribue mais juste de travailler avec les notions de Client / Serveur et d'application repartie.
    Et donc pas la meme avec ServerSocket et Socket

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

Discussions similaires

  1. [sockets] gethostbyname retourne toujours la même chose
    Par Strab dans le forum Développement
    Réponses: 3
    Dernier message: 15/09/2006, 10h24
  2. [socket UDP] Codage BER : Format des Tag (TLG)
    Par Lolita59 dans le forum Réseau
    Réponses: 28
    Dernier message: 19/05/2006, 17h37
  3. [MySQL] Rentrer des choses dans une base de données garce à un post
    Par BernardT dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/03/2006, 21h07
  4. [pratique web] Aspirer un site pour en apprendre des choses?
    Par sempire dans le forum Général Conception Web
    Réponses: 11
    Dernier message: 11/11/2005, 18h07
  5. Réponses: 23
    Dernier message: 22/04/2004, 11h55

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