Bonjour à tous et à toutes,
J'étais en train de suivre un tuto simple pour établir une connexion entre un serveur et un client avec socket, j'ai du un petit peu bidouiller le code parce que le tuto est en pyhton2 et qu'en python3 il faut encoder les messages. J'arrive à établir la connexion, les messages "codés en dur" s'envoient sans problèmes mais je n'arrive pas à envoyer les messages input().
Je reçois cette erreur :
Traceback (most recent call last):
File "/home/xxxxx/Bureau/Outilspy/msgClient.py", line 26, in <module>
mySocket.sendto(msgClient.encode(), HOST, PORT)
TypeError: an integer is required (got type str)
Que ce soit côté client ou côté serveur.
Voila mon code côté serveur :
Et voici mon code côté client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 import socket, sys HOST = "192.168.212.175" PORT = 50004 PORT = int(PORT) mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: mySocket.bind((HOST, PORT)) print("connexion up") except socket.error: print("La liaison du socket à l'adresse à échouée") sys.exit() while 1: print("Serveur prêt et en attente d'une requête") mySocket.listen(5) connexion, adresse = mySocket.accept() print("Client connecté, IP => ", adresse[0] ,", port utilisé => ", adresse[1] ,".") connexion.send(b"Bienvenue sur le serveur Blahaj") msgClient = connexion.recv(1024) msgClient.decode() while 1: print("c>", msgClient) if msgClient.upper() == "FIN" or msgClient == " ": break msgServeur = input(b"S> ") connexion.sendto(msgServeur.encode(), HOST, PORT) msgClient = connexion.recv(1024) msgClient.decode() connexion.send(b"Au Revoir") print("Connexion interrompue.") connexion.close() ch = input("<R>ecommencer ou <T>erminer ?") if ch.upper == T: break connexion.close()
Je comprend bien que c'est au niveau des sendto qu'il y a un problème mais je n'arrive pas à comprendre le pourquoi du comment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 import socket, sys HOST = "192.168.212.175" PORT = 50004 PORT = int(PORT) mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: mySocket.connect((HOST, PORT)) print("Connexion up") except socket.error: print("La connexion a échouée") sys.exit() print("Connexion établit avec le serveur.") msgServeur = mySocket.recv(1024) msgServeur.decode() while 1: if msgServeur.upper() == "FIN" or msgServeur.upper() == " ": break print("S> ", msgServeur) msgClient = input(b"C> ") mySocket.sendto(msgClient.encode(), HOST, PORT) msgServeur = mySocket.recv(1024) msgServeur.decode() import socket, sys HOST = "192.168.212.175" PORT = 50004 PORT = int(PORT) mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: mySocket.connect((HOST, PORT)) print("Connexion up") except socket.error: print("La connexion a échouée") sys.exit() print("Connexion établit avec le serveur.") msgServeur = mySocket.recv(1024) msgServeur.decode() while 1: if msgServeur.upper() == "FIN" or msgServeur.upper() == " ": break print("S> ", msgServeur) msgClient = input(b"C> ") mySocket.sendto(msgClient.encode(), HOST, PORT) msgServeur = mySocket.recv(1024) msgServeur.decode() print("connexion interrompue") mySocket.close() print("connexion interrompue") mySocket.close()
Merci de votre aide ^^
Partager