-
Un chat simple !
Bonjour à tous,
Je lance un peu un appel au secours, parce que je me suis un peu complètement perdue. Je cherchais, pour me faire la main en Python à développer un server/client chat relativement basique dans un premier temps en utilisant que le module socket, du genre mon server ouvre un socket, binde et écoute. Mon client se connecte et envoie des trucs via une lecture avec "input". Le server reçoit et renvoie... Le tout affiché dans la console. ( oui vraiment basique). Ensuite j'ai voulu améliorer et c'est là où je me suis perdue....:calim2:
D'un coté, je lis qu'il faut utiliser SocketServer (doc python), d'un autre qu'il faut utiliser des Threads ( Swinnen), encore d'un autre qui explique que les Threads ne sont pas la philisophie Python http://blog.unix4fun.net/post/2007/0...-comment-faire
Au final, ce que j'avais compris est que pour chaque client il me faut un thread d'émission et un thread de reception et pour le server un thread d'écoute. Mais dans ces cas là, quel est l'interet de classes comme SocketServer, BaseRequestHandler ? Et est ce qu'en ne manipulant que des Threads ce n'est pas un peu suicidaire avec le GIL ?
Si quelqu'un avait une explication à me donner ou un lien à m'indiquer pour éclaircir un peu tout ça, j'en serai grandement reconnaissante :).
Merci beaucoup & bonne journée à tous :),
-
Bonsoir,
SocketServer est de plus haut niveau que l'utilisation des threads; tu peux dériver de ThreadingTCPServer et la gestion des threads sera automatisée (mais pas tout à fait transparente, il faut toujours utiliser des locks si nécessaire). Le GIL ne devrait pas te poser de souci pour une application de ce type. Mais pour un simple chat tu n'as sans doute même pas besoin de threads; un serveur synchrone devrait faire l'affaire. Le principe est qu'il ne sert qu'un client à la fois, mais tant que la gestion d'une requête reste rapide cela ne devrait pas poser de problème.
Un joli exemple de serveur de chat avec ThreadingTCPServer: http://www.daniweb.com/software-deve.../threads/78535