Je travaille donc sur un framework Python IRC et j'utilise le module socket
de Python. Ai-je envie d'utiliser Twisted? Non, pas vraiment.Problèmes avec le module de socket Python
Quoi qu'il en soit, j'ai une boucle infinie lire et traiter des données de socket.recv(xxxx)
, où xxxx
est vraiment hors de propos dans cette situation. Je divise les données reçues en messages en utilisant str.split("\r\n")
et les traite un par un.
Mon problème est que je dois définir une «taille de lecture» spécifique dans socket.recv()
pour définir la quantité de données à lire à partir du socket. Quand je reçois une rafale de données (par exemple, lorsque je me connecte au serveur IRC et que je reçois MOTD.etc), il y a toujours un message qui couvre deux "lectures" de la socket (ie une partie de la ligne est lue en socket.recv()
et le reste est lu dans la prochaine itération de la boucle infinie).
Je ne peux pas traiter les messages à moitié reçus, et je ne suis pas sûr qu'il existe même un moyen de les détecter. Dans une situation idéale, je recevrais tout ce qui est dans le tampon, mais il ne semble pas que socket
fournit une méthode pour le faire.
Une aide?
Pourquoi réinventer la roue? Il y a déjà un tas de solutions pour faire cela, dont Twisted est la plus polyvalente. – jathanism
Pourquoi ne voulez-vous pas utiliser Twisted? – dicato