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 :

Socket : envoyer des grandes chaines de caractères


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Par défaut Socket : envoyer des grandes chaines de caractères
    Bonjour,

    Je dois via des sockets, envoyer des grandes chaines de caractères.
    Plusieurs clients peuvent se connecter au serveur et envoyer des messages.
    Les clients sont composés de nombreux threads, qui peuvent chacun envoyer de nombreux messages.
    Actuellement uniquement la méthode sendMessage est synchronisée :

    sendMessage(String message) {
    output stream (du socket) . write.... (message.toString() ou message.getBytes()...)
    }


    Je ne vois pas bien comment faire celà efficacement.


    Soit je tente d'envoyé le message d'un coup (ex : avec un BufferedOutputStream out.write(message.getBytes()) et alors du coté serveur je dois connaitre la taille du message (en placant la taille au début du message ?). Mais j'ai peur que les performance ne soient affectées.
    (En passant, l'output stream et le socket vont tout envoyé d'un coup ou par packet ?)

    Sinon, je peux envoyé par packet de 1000 bytes par exemple, mais je devrai alors rajouter un numéro du message afin que le serveur sache que le packet qu'il vient de recevoir appartient à un message spécifique.


    Je désire évidement uniquement avoir une piste pour faire celà (quel input/output stream utiliser ? envoyé d'un coup ? par packet ? ... ?) coté implémentation je me débrouillerai


    Merci d'avance,

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu met un int qui contient la taille des données à envoyer, puis les données en question. Ne te pose pas la question de savoir si tu fais 1000 par 1000 ou tout d'un coup, ca change rien. L'appel write splitte et concatène à son envie les données pour qu'elles rentrent dans le fenêtre de la socket! Et ton client, de l'autre coté se contentera de faire des appels à read autant que nécessaire.

    Si les client et le serveur sont en java, la paire de classes DataOutputStream / DataInputStream pourront te servir.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. Socket: taille d'une chaine de caractères inconnue
    Par bazoga dans le forum Débuter
    Réponses: 9
    Dernier message: 16/07/2012, 22h29
  2. Réponses: 5
    Dernier message: 21/09/2011, 11h43
  3. [RegEx] Extraire un nombre d'une grande chaine de caractères
    Par casier dans le forum Langage
    Réponses: 1
    Dernier message: 27/07/2011, 15h35
  4. [Socket] Envoyer des objets
    Par cyrill.gremaud dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 01/06/2011, 16h27
  5. [socket] envoyer des données vers un port com
    Par Slimer dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 20/07/2004, 17h35

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