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 :

[socket] TypeError: an integer is required (got type str) [Python 3.X]


Sujet :

Réseau/Web Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Employée restauration rapide (c'est nul)
    Inscrit en
    Septembre 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Employée restauration rapide (c'est nul)

    Informations forums :
    Inscription : Septembre 2023
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [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 : 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()
    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
    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 ^^

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par ElynaPasPeur Voir le message
    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.
    Le message d'erreur est clair, on ne passe pas à sendto les paramètres attendus.

    C'est là qu'on ouvre la documentation pour voir ce que mange sendto et qu'on essaie de comprendre ce que ça dit.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Femme Profil pro
    Employée restauration rapide (c'est nul)
    Inscrit en
    Septembre 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Employée restauration rapide (c'est nul)

    Informations forums :
    Inscription : Septembre 2023
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Le message d'erreur est clair, on ne passe pas à sendto les paramètres attendus.

    C'est là qu'on ouvre la documentation pour voir ce que mange sendto et qu'on essaie de comprendre ce que ça dit.

    - W
    Yep merci, j'avais cherché sur des forums et cette syntaxe avait était proposé j'ai pas eu le reflexe de chercher dans la docu,
    J'essaye de suivre la syntaxe de la docu du coup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    )sendto( octets , adresse )
    Avec toujours 1024 pour les octets, mais pour l'adresse je reçois une erreur qui me dit que l'argument doit être un tuple et je ne comprend pas comment c'est possible, est ce que tu as une idée ?

  4. #4
    Membre confirmé Avatar de licardentaistor
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2021
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2021
    Messages : 316
    Points : 453
    Points
    453
    Par défaut
    un tuple:


    ("127.0.0.1",7070);

  5. #5
    Candidat au Club
    Femme Profil pro
    Employée restauration rapide (c'est nul)
    Inscrit en
    Septembre 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Employée restauration rapide (c'est nul)

    Informations forums :
    Inscription : Septembre 2023
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par licardentaistor Voir le message
    un tuple:


    ("127.0.0.1",7070);
    Yes merci tu gères, je suis déblie j'essayais de compartimenter l'ip dans un tuple

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par ElynaPasPeur Voir le message
    Avec toujours 1024 pour les octets, mais pour l'adresse je reçois une erreur qui me dit que l'argument doit être un tuple et je ne comprend pas comment c'est possible, est ce que tu as une idée ?
    L'argument est une adresse... et la documentation raconte à quoi doit ressembler une adresse suivant la famille de socket.

    Dans le cas TCP/IPv4 ce sera le tuple:
    Citation Envoyé par ladocumentation
    A pair (host, port) is used for the AF_INET address family, where host is a string representing either a hostname in internet domain notation like 'daring.cwi.nl' or an IPv4 address like '100.50.200.5', and port is an integer.
    Si à la sortie du tuto. vous ne savez pas lire le mode d'emploi, c'est qu'il est insuffisant (et qu'il faut en trouver un autre).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur Objet requis : 'this' --> Comprend pas!!
    Par Grozeil dans le forum ASP
    Réponses: 3
    Dernier message: 30/03/2005, 09h46
  2. [thread][methodologie]Quelque chose que je ne comprends pas!
    Par norkius dans le forum Général Java
    Réponses: 5
    Dernier message: 16/03/2005, 14h01
  3. sql ne comprend pas mon where!et me demande des parametres
    Par marie10 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/04/2004, 11h08
  4. [Rave] un message que je ne comprends pas
    Par Clotilde dans le forum Rave
    Réponses: 2
    Dernier message: 30/09/2003, 21h46

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