Chat basique en python

Messages postés
6
Date d'inscription
mercredi 29 octobre 2008
Dernière intervention
14 août 2010
- - Dernière réponse :  Famalo - 3 mars 2018 à 12:20
bonjour,
je suis en train d'essayer de programmer un chat en python, principalement dans le but d'apprendre l'utilisation des sockets et de la communication entre différend ordinateur. pour l'instant, donc, mon but et de faire un système de chat rudimentaire gérer avec des threads. J'ai utilisé le livre de Gérard Swinnen
avec ses exemple de client/serveur géré par des Threads.

Mon problemme, le voici : avec le code ci-dessous, il me dit bien "connections établie" mais aprés plus rien ne se passe. la fonction raw_input() n'est même pas appelé:
import socket, sys
from threading import Thread

PORT = 139              # changer le port
HOST = "192.168.0.10"   # changer l'adresse, avec votre adresse locale

class ThServeur(Thread):
    """ Thread qui va gerer le serveur"""

    def __init__(self, contact):
        Thread.__init__(self)
        self.s = contact

    def run(self):
        print "ThreadServeur en fonction"

        try:
            self.s.bind(("", PORT))
        except:
            print "connection impossible"
            sys.exit()
        print "connection etablie"

        self.s.listen(2)
        while 1:
            self.s.accept()
            self.s.send("vous ete connecte avec le client")
            while 1:
                EmsgS = raw_input("S> ")
                self.s.send(EmsgS)
                RmsgC = self.s.recv(1024)
                print RmsgC


class ThClient(Thread):
    """ Thread qui va gerer le Client"""

    def __init__(self, contact):
        Thread.__init__(self)
        self.s = contact

    def run(self):
        print "ThreadClient en fonction"

        try:
            self.s.connect((HOST, PORT))
        except:
            print "connection impossible"
            sys.exit()
        print "connection etablie"

        while 1:
            EmsgC = raw_input("C> ")
            self.s.send(EmsgC)
            RmsgS = self.s.recv(1024)
            print RmsgS


Soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)     # définition du socket
Th_S = ThServeur(Soc)
Th_C = ThClient(Soc)
Th_S.start()
Th_C.start()


Le hic, c'est que même le code de Gérard Swinnen
ne marche pas cher moi en local : (voir page 292 sur le livre format pdf)
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
158
Date d'inscription
dimanche 18 avril 2004
Dernière intervention
25 juillet 2018
1
Merci
Je comprend pas pourquoi tu t’en merde autant.
Je t'es fait vite fait un serveur et un client bien commenté (j'ai pas vérifié mais ça devrai être bon)


Server :

# j'importe le module
import socket

# je cree la socket TCP
sck =  socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# je bind la socket
Host = ''
Port = 139
sck.bind((Host,Port))

# je la met en ecoute 
sck.listen()

# jaccepte le client
client, ip = sck.accept()

print "Nouvelle connexion : " + ip

# tant que l'ont est connecte
while (sck.connect):

    # donnee_recu gere les donnees recu (max 1024 octees)
    donnee_recu = sck.recv(1024)

    # Si ont ne reçoi rien on attend afin deviter de faire morfle le processeur
    if not donnee_recu : break
    
    # Sinon j'affiche les donnees recu
    else : print " >>> " + donnee_recu



Client :

# j'importe le module
import socket

# je cree la socket TCP
sck  = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# je me connect
Host = '127.0.0.1'
Port = 139
sck.connect((Host,Port))

print "Vous etes connect !"

# boucle pour reste connecte
while (sck.connect):

    # le client ecrit
    donnee_envoi = raw_input(" >>> ")

    # ils envoi les donnees
    sck.send(donnee_envoi)

    # ils affiche (esthetique)
    print " >>> " + donnee_envoi
    

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

la fenetre s'ouvre et se referme immediatement
Commenter la réponse de Guillamue06
Messages postés
291
Date d'inscription
dimanche 4 octobre 2009
Dernière intervention
25 août 2014
1
Merci
je l'ai testé, il me dit connexion impossible , ligne 10

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de begueradj
Messages postés
291
Date d'inscription
dimanche 4 octobre 2009
Dernière intervention
25 août 2014
0
Merci
tu es à la fois gentil et méchant, Guillaume :)
Commenter la réponse de begueradj

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.