IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

construire un serveur de chat sur LAN


Sujet :

Réseau/Web Python

  1. #1
    Membre régulier

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2012
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2012
    Messages : 70
    Points : 120
    Points
    120
    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

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    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.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 46
    Points : 59
    Points
    59
    Par défaut
    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 ?

Discussions similaires

  1. Stream localisé sur serveur de chat
    Par Makusensu dans le forum NodeJS
    Réponses: 1
    Dernier message: 05/02/2014, 19h28
  2. [Debutant] Connexion à un serveur SQL Server sur le reseau
    Par klael dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/02/2009, 03h07
  3. deploiement d'un site sur LAN (IIS5.1)
    Par bahaa dans le forum Windows
    Réponses: 7
    Dernier message: 09/11/2005, 13h59
  4. [Routeur] Voir son serveur web local sur internet
    Par romain3395 dans le forum Applications
    Réponses: 13
    Dernier message: 16/12/2004, 10h36
  5. Réponses: 6
    Dernier message: 26/03/2004, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo