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

Python Discussion :

l'envoi des données à travers d'une socket


Sujet :

Python

  1. #1
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut l'envoi des données à travers d'une socket
    Bonjour,

    j'ai ce script server.py
    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
    import socket               # Import socket module
    import sys
     
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print 'Socket created'
     
     
    host =''
    PORT = 48437                # Reserve a port for your service.
     
    try:
        s.bind((host, PORT))  # Bind to the port
    except socket.error as msg:
        print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
        sys.exit()
     
    print "Listening on port {p}...".format(p=PORT)
     
    s.listen(1)           #number of client
     
     
    while True:
    conn, addr = s.accept()
    print ("Connection from", addr)
    data = conn.recv(1024)
        if not data:
            break
        elif data == 'killsrv':
            conn.close()
            sys.exit()d
        else:
            print(data)
            #conn.sendall(data)
            conn.close():
    s.close()
    le script client.py
    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
    import socket   #for sockets
    import sys  #for exit
     
    try:
        #create an AF_INET, STREAM socket (TCP)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    except socket.error, msg:
        print 'Failed to create socket. Error code: ' + str(msg[0]) + ' , Error message : ' + msg[1]
        sys.exit();
     
    print 'Socket Created'
    host = '192.168.99.113'
    port = 48437
    try:
        remote_ip = socket.gethostbyname( host )
     
    except socket.gaierror:
        #could not resolve
        print 'Hostname could not be resolved. Exiting'
        sys.exit()
     
     
    #Connect to remote server
    s.connect((remote_ip , port))
     
     
    while True:
        message = raw_input('test send data :')
        try :
            s.sendall(message)
            print s.recv(1024)
        except socket.error:
            print 'Send failed'
            sys.exit()
     
    s.close()

    le problème que le client peut envoyer les données qu'une seule fois car le serveur ne reste pas toujours en réception des données.

    aidez moi de trouver une solution pour que le serveur reste toujours en réception des données envoyer par le client.
    merci d’avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 446
    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 446
    Points : 37 040
    Points
    37 040
    Par défaut
    Salut,
    Si vous avez écrit ce code, vous devriez savoir expliquer le pourquoi de la ligne 34.
    - W

  3. #3
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,
    Si vous avez écrit ce code, vous devriez savoir expliquer le pourquoi de la ligne 34.
    - W
    à propos la ligne conn.close(): c'est pour fermer la connexion après la réception des données

    le problème que le serveur affiche que la première insertion des données du client même si j'élimine la ligne 34 conn.close().

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 446
    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 446
    Points : 37 040
    Points
    37 040
    Par défaut
    Citation Envoyé par rezguiinfo Voir le message
    le problème que le serveur affiche que la première insertion des données du client même si j'élimine la ligne 34 conn.close().
    La question porte alors sur la ligne 31 du code client.

    - W

  5. #5
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    La question porte alors sur la ligne 31 du code client.

    - W

    merci j'ai éliminé la ligne 31 ça marche maintenant.
    mais je sais pas pourquoi la ligne 31 bloque le transfère des données

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 446
    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 446
    Points : 37 040
    Points
    37 040
    Par défaut
    Citation Envoyé par rezguiinfo Voir le message
    mais je sais pas pourquoi la ligne 31 bloque le transfère des données
    Probablement a cause du # a la ligne 33 de l'autre cote.
    - W

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

Discussions similaires

  1. Envoi des données en HTTPS via une JSF
    Par dev_2007 dans le forum JSF
    Réponses: 7
    Dernier message: 16/03/2011, 16h14
  2. [AC-2010] envoie des données d'une base access a un siem
    Par rezguiinfo dans le forum Sécurité
    Réponses: 0
    Dernier message: 16/03/2011, 15h37
  3. Réponses: 18
    Dernier message: 26/06/2008, 11h10
  4. Réponses: 1
    Dernier message: 05/04/2006, 10h49
  5. socket : envois des données impossible
    Par thechief dans le forum Réseau
    Réponses: 16
    Dernier message: 18/03/2006, 20h28

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