Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Réseau/Web
Réseau/Web Forum d'entraide sur Python et le réseau/Web
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 29/09/2012, 15h09   #1
linux user
Invité de passage
 
Inscription : août 2012
Messages : 24
Détails du profil
Informations forums :
Inscription : août 2012
Messages : 24
Points : 4
Points : 4
Par défaut construire un serveur de chat sur LAN

Bonjour
je veux creer un serveur de chat sur un reseau local
Pour cela j'ai pensé à utiliser une liste (je l'utiliserai comme un FIFO), cette liste contient des objets, chaque objet contient source ,destination et le message .je vais utilise les sockets . pour chaque client je lancerai un thread
la question qui se pose : est-ce que les fonctions executées sur des threads differents peuvent manipuler les même objets ?

le principe est simple
1-Dés que je reçois un client je verifie la liste des gens connectés pour la lui transmettre
2-Je verifie la liste des objets pour voir s'il a des messages
3-Je copie son messge envoié dans la liste des objets

avec 2 et 3 j'ai un probleme d'organisation de communication (ecriture et lecture)
je propose deux solutions et vous me dites laquelle est la meilleur ou bien si vous avez mieux ^^
1-j'ouvre deux session pour chaque client
a-la premiere en mode ecriture (client => serveur)
b-la deuxieme dans le autre sens (serveur => serveur)
2-pour ne pas être bloquer en mode lecture sur le client ou le serveur , j'ai pensé à envoyer des messages vide , par exemple : quand le serveur ne trouve pas des messages pour le client il lui envoie un message vide , pour que le client puisse entre dans le modee ecriture
Mais si j'applique le deuxieme methode il y'aura tous le temps des messages à travers le reseau (ce n'est pas mauvais ? )

je veux savoir votre avis
merci d'avance
linux user est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2012, 18h19   #2
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 739
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 739
Points : 4 581
Points : 4 581
Salut,

Humm, un chat c'est un protocole IRC. Google dit qu'il y a un bibliothèque irclib à voir: je ne l'ai jamais utilisée. Sinon, il y a le librarie SocketServer qui peut donner une base.

Les autres questions ne me semblent pas spécifiques à Python tant que vous ne montrez pas de code.

Citation:
Envoyé par linux user Voir le message
est-ce que les fonctions executées sur des threads differents peuvent manipuler les même objets ?
Yes! Les threads partageant le même espace mémoire virtuel, chaque threads à accès à tout (et à fortiori lorsque tout est objet sous Python).

Cette facilité est aussi "problème" puisqu'il faut que le code synchronise les mises à jour des objets partagés. Cette synchronisation devra être explicite avec des threads mais elle pourrait être "implicite" avec des tasklets construits avec des generators (une Pythonerie utile pour remplacer les threads mais qui dit Pythonerie, dit approche difficile).

Citation:
Envoyé par linux user Voir le message
2-pour ne pas être bloquer en mode lecture sur le client ou le serveur , j'ai pensé à envoyer des messages vide , par exemple : quand le serveur ne trouve pas des messages pour le client il lui envoie un message vide , pour que le client puisse entre dans le modee ecriture
Une socket est bi-directionnelle pas besoin d'en créer une pour écrire et une autre pour lire: ce pourra être la même.
Les threads ne sont-il pas là pour ne pas bloquer en lecture ou en écriture?
Je vous propose la lecture de ce vieil article du Linux Journal, il présente la mise en œuvre d'une librairie Python qui s'appelle Twisted: l'API propose une mécanique event-driven et vous n'avez plus à vous poser de question sur threads, tasklets,... la librairie a fait le choix pour vous.

- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2013, 22h25   #3
davs34
Invité de passage
 
Inscription : octobre 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 14
Points : 4
Points : 4
Le sujet m’intéresse énormément

Je tente de faire un serveur de jeu en ligne avec un tchat. ( client en action-script pour la compatibilité iphone/android et les options graphique )

Je vais utiliser les sockets ( xml ) aussi, n’ayant pas réussit a utiliser RPC ni les message Adobe

Tu en es ou ?
davs34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h16.


 
 
 
 
Partenaires

Hébergement Web