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

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] probleme de socket bloquant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] probleme de socket bloquant

n°805343
Nicoooo
Posté le 24-07-2004 à 15:22:35  profilanswer
 


Bonjour,
 
J'ai un probleme au niveau d'un socket en perl,
je n'arrive pas à lire les données dans le buffer
de celui-ci (via un <Socket> ) par ce que elles ne sont
pas finies par le caractere \n
 
Si qq avait une solution pour lire le buffer du socket..  
sachant que je connais exactement le nombre d'octet dans
celui-ci, et je cherche une solution qui fonctionne sous windows ;\
 
Merci à vous :))
 

mood
Publicité
Posté le 24-07-2004 à 15:22:35  profilanswer
 

n°805352
pospos
Posté le 24-07-2004 à 16:36:50  profilanswer
 

je te deconseille <> pour lire sur des sockets
 
pour avoir un socket non bloquant sous windows normalement tu dois pouvoir utiliser IO::Socket qui a une method blocking (censé marché à partir de perl 5.8 pour activePerl) mais perso ca marche pas chez moi
 
ya une methode pour rendre le socket non bloquant specialement pour windows, je te la filerais lundi si tu veux.
 
mais le plus simple c'est encore de rester sur des sockets bloquants et de faire un select
 
regarde le module IO::Select
il te dit quel socket à qq chose à lire (can_read) et ensuite il te suffit de lire avec un sysread (surtout pas un read ou un <> ). Tu demande à lire une grose quantité de donnée (genre 65536) et le sysread te retournera tout ce qu'il peut lire (donc <= à 65536). Ensuite il faudra attendre qu'il y ai à nouveau qq chose à lire.
Si tu fait un read ou un <> à la place du sysread ca va foirer car Pelr va chercher à lire la taille exacte donnée au read, ou attendre le saut de ligne poyur le <>

n°805681
Nicoooo
Posté le 25-07-2004 à 13:16:35  profilanswer
 

Merci beaucoup!
 
Je suis arrivé à faire ce que je veux avec un sysread.
Mais c'est bizzare, car si auparavant j'effectue une lecture
avec un <>, le sysread devient bloquant. Mais c'est pas grave je fais tout avec sysread maintenant.
encore merci :)

n°805682
pospos
Posté le 25-07-2004 à 13:29:44  profilanswer
 

utilise IO::Select avant CHAQUE sysread, pour etre certain qu'il y a qqchose à lire, car sinon ca va bloquer


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] probleme de socket bloquant

 

Sujets relatifs
Problème compilateur cobol[ C# ] problème "access denied"
probleme lors de l'installation de Visual Basic 6.0problème avec la fonction herader
[PERL] Écrire du texte en couleur ?probleme d'affichage BDD avec les chiffres
probleme Visual Basic Access[ACCESS] Probleme insert valeur Null ???
probleme JAVA (applet)Probleme langage SQL sous sql serveur
Plus de sujets relatifs à : [Perl] probleme de socket bloquant


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