Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1402 connectés 

  FORUM HardWare.fr
  Programmation
  Ruby/Rails

  Sockets: Question générale (pas seulement Ruby)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sockets: Question générale (pas seulement Ruby)

n°2200630
Profil sup​primé
Posté le 23-08-2013 à 10:23:54  answer
 

Hello  :hello:  
 
Imaginons, j'ai une socket qui lit les données d'un serveur, chaque message se termine par \n.
Dans ma boucle principale, j'utilise select pour savoir si je peux lire ou pas sur la socket.

Code :
  1. IO.select([@socket], nil, nil, timeout)


Juste pour être certain, vaut il mieux utiliser read_nonblock(SIZE) plutôt que gets?
C'est plus efficace de lire ligne par ligne ou de récupérer un flot de données et extraire les messages en fonction du délimiteur \n.
 
 
Idem pour écrire, j'ai un buffer et j'écris ce que je peux avec write_nonblock(data).

Code :
  1. ...
  2. @buffer = ["plein\n", "de\n", "messages\n", "...\n"]
  3. s = @buffer.shift or ''
  4. while s[0] and @buffer[0]
  5.   if (s.size + @buffer[0].size) > 400
  6.     # Test longueur du message.
  7.     break
  8.   end
  9.   s << @buffer.shift
  10. end
  11. until s.empty?
  12.   size = @socket.write_nonblock(s)
  13.   s.slice!(0, size)
  14. end


Sinon j'arrive pas à regrouper ce bout de code en une seule loop (while, until, loop), une idée?

mood
Publicité
Posté le 23-08-2013 à 10:23:54  profilanswer
 

n°2200910
Profil sup​primé
Posté le 27-08-2013 à 20:01:46  answer
 

:bounce:


Message édité par Profil supprimé le 28-08-2013 à 06:16:52

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ruby/Rails

  Sockets: Question générale (pas seulement Ruby)

 

Sujets relatifs
Lettres uniquement et seulement en htmlQuestion de droits (licenses)
Question sur les tablesquestion htaccess / apache
peties question php/mysql sur le nombre de reqRuby gem xmlsimple
[Reverse] C'est ok !Migrer un projet de ruby 1.8.6 vers 2.0
Question[C] [Résolu] Tetris -> SDL ? Réseaux ?
Plus de sujets relatifs à : Sockets: Question générale (pas seulement Ruby)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR