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

Concurrence et multi-thread Java Discussion :

[ByteBuffer] Thread safe


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Par défaut [ByteBuffer] Thread safe
    Bonjour,

    Dans un développement d'un proxy (qui n'est pas de moi), une personne utilise un ByteBuffer pour transférer les données entre les différentes sockets.
    Je souhaiterais connaitre la taille des données transférées entre les sockets. Cependant je n'arrive pas à comprendre comment je peux récupérer cette taille en octets.

    Quelqu'un aurait-il une idée ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    As-tu cherché dans la Javadoc ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Par défaut
    Bonjour,

    Je ne comprends pas trop ton problème, si tu connais la personne qui utilise le byteBuffer, ou que tu a vu le code, pourquoi ne pas lui demander de te donner la capacity de celui-ci (ou de lire le code) ?

    Sinon, si tu n'a accès qu'à l'autre coté du socket, je ne vois pas de moyen dans la mesure où un socket n'a aucune connaissance de la classe ByteBuffer, ni même du langage java, à moins que le protocile d'échange prévoie un octet ou un marqueur de fin de bloc qui soit placé tous les X octets, en supposant que ce nombre soit celui de la capacity du buffer, ce qui n'est pas sûr.

    Cordialement




    Cordialement

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    On s'en tape de la capacity, ce n'est qu'un buffer. Il vaut mieux jeter un œil du côté des appels à ReadableByteChannel.read() ou WritableByteChannel.write(), et compter le nombre d'octets vraiment lus ou écrits.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Par défaut
    En effet, mea culpa, j'ai mal formulé ma question. J'étais plus dans le doute de savoir l'information la plus fiable pour avoir le nombre de bytes échangés.

    J'ai procédé comme suit :
    Le code actuel appelle une fonction transfer qui est appelé à chaque fois que mon buffer est plein. Dans cette fonction, je récupère les bytes lus dans la socket :
    int numRead = socket.read(MyByteBuffer);

    J'utilise cette valeur que j'incrémente pour connaitre le nombre de bytes total récupérés dans ma socket.

    J'ai quand même des valeurs assez étranges comme une page web dont le Header indique Content-length : 880 et j'ai 45321 bytes récupérés. Cela est peut être du à un mauvais codage, je vais revérifier mon code.

    Merci pour votre aide.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Par défaut
    Bonjour,

    Petit aparté pour thelvin, on ne dit pas "on s'en tape de..' mais "je pense que la question posée ne concerne pas la capacity ..." C'est plus poli et ça fait preuve d'un peu plus de respect vis à vis des gens (en l’occurrence, moi) qui tentent de rendre service et qui, comme tout un chacun, peuvent comprendre de travers une question.

    Ensuite, pour FinalSpirit, j'ai effectivement été induit en erreur par le titre de ton message. Par contre, je me demande quelle est la classe de cet objet que tu nommes "socket" et qui possède une méthode read(ByteBuffer) ?

    Est-ce une classe d'encapsulation de la classe Socket faite par toi ?
    Si oui, peut-être le code nous aiderait à comprendre la raison de ces tailles apparemment erronées

    Cordialement

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Par défaut
    Oui en effet, je n'ai pas précisé, c'est un SocketChannel d'où la méthode read. Les java.nio.channels.Selector et java.nio.channels.SocketChannel sont utilisé pour gérer les différentes demandes des applications.

Discussions similaires

  1. [RCP] Treeviewer non thread-safe ?
    Par Guildux dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 09/01/2007, 13h00
  2. fonction de stdio.h thread safe ??
    Par boolzor dans le forum POSIX
    Réponses: 3
    Dernier message: 30/04/2006, 20h03
  3. Code "Thread Safe" ?
    Par Neitsa dans le forum C++
    Réponses: 3
    Dernier message: 23/12/2005, 14h33
  4. [Language]Immutable & Thread-Safe
    Par Repti dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 21/12/2005, 15h50
  5. [MFC] CMAP non thread safe ?
    Par fmarot dans le forum MFC
    Réponses: 5
    Dernier message: 04/10/2005, 13h21

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