[socket] TypeError: an integer is required (got type str)
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 :
Code:
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() |
Et voici mon code côté client :
Code:
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() |
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.
Merci de votre aide ^^