class Networking():
def __init__(self, window, username, server, port):
self.window = window
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect((server, port))
self.listening = True
self.send("USERNAME {0}".format(username))
def listener(self):
while self.listening:
data = ""
try:
data = self.socket.recv(443)
except socket.error:
"impossible de recevoir les donnes"
self.handle_msg(data)
time.sleep(0.1)
def listen(self):
self.listen_thread = threading.Thread(target=self.listener)
self.listener_thread.daemon = True
self.listen_thread.start()
def send(self, message):
print "envoie: {0}".format(message)
try:
self.socket.sendall(message)
except socket.error:
print "impossible d'envoyer le message"
def tidy_up(self):
self.listening = False
self.socket.close()
gobject.idle_add(self.window.add_text, "server a quitter.\n")
def handle_msg(self, data):
if data == "QUIT":
self.tidy_up()
elif data == "":
self.tidy_up()
else:
gobject.idle_add(self.window.add_text, data)
if __name__ == "__main__":
MainWindow()
gtk.main()
et voici mon erreur:
Traceback (most recent call last):
File "./IM-Client.py", line 117, in <module>
MainWindow()
File "./IM-Client.py", line 34, in __init__
self.configure()
File "./IM-Client.py", line 58, in configure
regex = re.search('^(\d+\.\d+\.\d+\.\d+):(\d+)$', server)
File "/usr/lib/python2.7/re.py", line 146, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or buffer
Pas difficile de déboguer.
Quel type de valeur retourne la méthode ask_for_info ?
_armydead11
Messages postés4Date d'inscriptionjeudi 21 novembre 2019StatutMembreDernière intervention21 novembre 2019 21 nov. 2019 à 18:00
C est une boîte de dialogue dans laquel je met l'adresse du serveur ainsi que le port. Lorsque je clique sur connect le programme plante et m'affiche le message d'erreur ci dessus
trifou
>
_armydead11
Messages postés4Date d'inscriptionjeudi 21 novembre 2019StatutMembreDernière intervention21 novembre 2019 Modifié le 21 nov. 2019 à 18:29
Oui, et donc ça ne te choque pas de donner à manger à re.search une boîte de dialogue gtk ?
if response == gtk.RESPONSE_OK:
return response
else:
return None
Moi, je dirai que ce n'est pas response que ask_for_info doit retourner, mais response_text.
D'ailleurs, tu auras aussi un plantage si ta méthode retourne None.
_armydead11
Messages postés4Date d'inscriptionjeudi 21 novembre 2019StatutMembreDernière intervention21 novembre 2019 21 nov. 2019 à 18:45
Effectivement c est bien reponse_text, j avait fait des tests mais j ai oublier de remettre le text, mais le problème reste toujours présent même avec le _text après...
trifou
>
_armydead11
Messages postés4Date d'inscriptionjeudi 21 novembre 2019StatutMembreDernière intervention21 novembre 2019 21 nov. 2019 à 19:04
Dans ce cas, un print de la variable server dans
MainWindow.configure
devrait te mettre sur la voie de pourquoi re.search plante avec cette variable server.
_armydead11
Messages postés4Date d'inscriptionjeudi 21 novembre 2019StatutMembreDernière intervention21 novembre 2019 21 nov. 2019 à 19:40
Ça y est j ai réussi mais ne me demandez comment j ai fait je 'e le sait pas moi même...
Mais j ai encore un autre problème... (voir photo)
Si vous pourriez encore me filer un coup de main ce serait vraiment sympas...
21 nov. 2019 à 18:00
Modifié le 21 nov. 2019 à 18:29
Moi, je dirai que ce n'est pas response que ask_for_info doit retourner, mais response_text.
D'ailleurs, tu auras aussi un plantage si ta méthode retourne None.
21 nov. 2019 à 18:45
21 nov. 2019 à 19:04
21 nov. 2019 à 19:40
Mais j ai encore un autre problème... (voir photo)
Si vous pourriez encore me filer un coup de main ce serait vraiment sympas...