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 :

Problème Serveur/Client Python


Sujet :

Réseau/Web Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2020
    Messages : 2
    Points : 0
    Points
    0
    Par défaut Problème Serveur/Client Python
    Bonjours à tous,

    J'ai un problème avec python... Je cherche à faire un serveur qui communique avec un client :

    Voila le code python de mon 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
    import socket
    s = socket.socket()
    s.bind(('', 8888))
    s.listen(1)#
    client, adresse = s.accept()
    print('Connecté avec', adresse)
    message = client.recv(1024).decode('utf8')
     
    while message != 'Q':
        print(message)
        message = client.recv(1024).decode('utf8')
    s.close()
     
    client.close()
    Voila le code python de mon client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import socket
    s = socket.socket()
    s.connect(('localhost', 8888))
    message = input('Saisissez votre message (Q pour quitter): ')
     
    while message != 'Q':
        s.send(bytes(message,'utf8'))
        message = input('Saisissez le message suivant (Q pour quitter):  ')
    s.recv(1024)
    s.send(b'Q')
    s.close()
    Ce programme fonction parfaitement le serveur communique bien avec le client et inversement mais j'aimerais que le serveur envoie un accusé de réception au client lorsque il à reçu le message en lui renvoyant les message et en donnant le nombre de caractère.

    Au niveau du client je pensais rajouter cette commande : s.recv(1024) au dessus de s.send(b'Q').

    Au niveau du server je pensais mettre cette commande : client.send(print(message), len(message)).

    en dessus de : message = client.recv(1024).decode('utf8').

    Mais lorsque je lance le server et client tout fonction il ce connecte bien le deux mais lorsque j'écris un message sur le client le serveur le reçois et me met cette erreur la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Connecté avec ('127.0.0.1', 56120)
    s #il reçoit bien le message puis ensuite il met l'erreur :
    Traceback (most recent call last):
      File "...", line 11, in <module>
        client.send(print(message), len(message))
    TypeError: a bytes-like object is required, not 'NoneType'
    Et sur le client du coup rien ne se passe le serveur ne revois pas le message avec le nombre de caractère...
    Pourriez vous m'aider SVP ?
    Merci

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

    Citation Envoyé par TecPy Voir le message
    Au niveau du server je pensais mettre cette commande : client.send(print(message), len(message))
    Apprenez à relire votre code, client.send(print(message), len(message)) exécute d'abord print(message) et c'est le retour de cette fonction qui sera l'argument.
    print retourne None, donc c'est pareil qu'écrire client.send(None, len(message))
    D'où le message d'erreur TypeError: a bytes-like object is required, not 'NoneType'.

    Citation Envoyé par TecPy Voir le message
    mais j'aimerais que le serveur envoie un accusé de réception au client lorsque il à reçu le message en lui renvoyant les message et en donnant le nombre de caractère.
    Tel que le code est écrit, la variable message vaudra 'Q' à la sortie de la boucle et il n'y a rien dans votre code pour mémoriser les messages reçus.
    Ce qui est pourtant bien plus simple que la programmation réseau que vous devez apprendre avant de jouer avec car au delà du dialogue simplissime que vous avez (déjà mal) codé, c'est passablement compliqué.

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

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2020
    Messages : 2
    Points : 0
    Points
    0
    Par défaut
    Merci pour votre réponse!
    J'avais mal vu à ce niveau là j'ai donc changé par client.send(message, len(message)).
    Mais je ne comprends pas comme faire donc pour que il envoie un accusé de réception car comme vous il n'y a rien dans mon code pour mémoriser les messages reçus...
    Sauriez-vous comment je pourrais faire cela s'il vous plait ?
    Je vous remercie

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

    Citation Envoyé par TecPy Voir le message
    Sauriez vous comment je pourrais faire cela s'il vous plait ?
    Les listes et les chaines de caractères sont des objets de base du langage. Si vous ne les maîtrisez pas, ouvrez un tuto. et prenez le temps d'apprendre. Vous avez beaucoup de temps libre en ce moment, profitez en!

    Dans la plupart des bons tutos, la programmation réseau est abordée dans les derniers chapitres. C'est pas pour rien, il y a des tas de choses à savoir avant...

    - 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. Problème Serveur/Client: envoi multiple d'images
    Par jbinder dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 25/01/2014, 03h18
  2. [FreeBSD] Problème connection serveur-client
    Par mout551 dans le forum BSD
    Réponses: 8
    Dernier message: 06/08/2007, 17h21
  3. [débutant] serveur-client : problème de transfert de données
    Par Mag007 dans le forum Développement
    Réponses: 2
    Dernier message: 19/04/2007, 22h05
  4. [ServerSocket]Problème communication client-serveur udp sur linux
    Par gdecrouez dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 29/09/2006, 14h59
  5. [ODBC] Problème entre client windows, serveur windows
    Par Mascotte dans le forum Installation
    Réponses: 13
    Dernier message: 13/09/2006, 12h15

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