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 :

Programmation serveurs avec Python application TCPIP V4 / serveur multi threads


Sujet :

Python

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2012
    Messages
    335
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2012
    Messages : 335
    Par d�faut Programmation serveurs avec Python application TCPIP V4 / serveur multi threads
    bonjour � tous,

    Il faut que je fasse un programme serveur en Pyhon 2.7 d'ici demain soir dimanche 25.
    L'application doit faire la chose suivante :

    python dico.docx

    Bien entendu, je ne vous demande pas de tout me faire mais de m'expliquer comment je dois faire, les premi�res lignes et ce qu'il faut respecter lorsqu'il y a du multi threads.

    J'ai �tudi� le python sur internet mais n'ai pas eu de cours en programmation serveur.

    Merci beaucoup

  2. #2
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 772
    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 772
    Par d�faut
    Salut,

    Citation Envoy� par aertys Voir le message
    Bien entendu, je ne vous demande pas de tout me faire mais de m'expliquer comment je dois faire, les premi�res lignes et ce qu'il faut respecter lorsqu'il y a du multi threads.
    Dans un premier temps vous pourriez ignorez threads et r�seau en essayant de coder l'activit� de traduction du serveur en faisant des saisies via "input" et des retours via "print".

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

  3. #3
    Expert confirm�
    Avatar de tyrtamos
    Homme Profil pro
    Retrait�
    Inscrit en
    D�cembre 2007
    Messages
    4 486
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par d�faut
    Bonjour,

    Dans la mesure o� ce serveur est bien un serveur TCP (mais pas web), voil� un petit code de test que j'ai fait il y a 10 ans pour Python 2. A titre d'exemple, il s'agit d'un serveur qui �value (eval(...)) une expression math�matique envoy�e en tant que requ�te. A voir s'il est toujours d'actualit� avec l'�volution des modules:

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    # Serveur TCP utilisant StreamRequestHandler du module SocketServer
     
    # import nécessaire pour le fonctionnement du serveur
    import SocketServer
     
    # import seulement nécessaire pour l'exemple (=calcul d'expression par eval())
    import sys
    from math import *
     
    # initialisation des variables globales
    adresse=('', 20000)
     
    ##############################################################################
    class Traitementrequete(SocketServer.StreamRequestHandler):
     
        def handle(self):
     
            # lecture de la requête et suppression des caractères de fin de ligne
            requete = self.rfile.readline().rstrip('\r\n')
     
            # préparation de la réponse
            try:
                reponse = "%s" % eval(requete)
            except:
                reponse = "%s" % sys.exc_info()[1]
     
            # envoi de la réponse avec ajout des caractères de fin de ligne
            self.wfile.write("%s\r\n" % reponse)
     
            return
     
    ##############################################################################
    class Serveurthread(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
        pass
     
    ##############################################################################
    if __name__ == '__main__':
     
        serveur = Serveurthread(adresse, Traitementrequete)
        print "serveur actif"
        serveur.serve_forever()
        # fermeture de connexion inutile: on arrête le serveur en "tuant" son processus
        #server.socket.close()
    Il y aura du boulot pour l'adapter � ce qui est demand�, mais la structure g�n�rale devrait �tre ok.

    Par contre, je ne vois pas comment on peut interrompre le serveur avec Ctle-C comme demand� dans l'exercice, puisqu'il n'est pas pr�vu qu'il re�oive les touches du clavier. ??? A mon avis, on ne peut l'arr�ter qu'en lui envoyant une requ�te sp�ciale pour �a ("END"?), ou en utilisant les outils de l'OS pour le tuer "m�chamment" � la main.

    Pour le client TCP capable de rentrer en communication avec lui, ainsi que d'autres explications sur mon site web (Il y a m�me un exemple de serveur asynchrone multi-processus):
    http://python.jpvweb.com/python/mesr..._multi-threads

  4. #4
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 772
    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 772
    Par d�faut
    Citation Envoy� par tyrtamos Voir le message
    Par contre, je ne vois pas comment on peut interrompre le serveur avec Ctle-C comme demand� dans l'exercice, puisqu'il n'est pas pr�vu qu'il re�oive les touches du clavier. ???
    C'est une histoire qui se r�gle via try... except KeyboardInterrupt.

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

  5. #5
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 772
    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 772
    Par d�faut
    Citation Envoy� par tyrtamos Voir le message
    Par contre, je ne vois pas comment on peut interrompre le serveur avec Ctle-C comme demand� dans l'exercice, puisqu'il n'est pas pr�vu qu'il re�oive les touches du clavier. ???
    C'est une histoire qui se r�gle via try... except KeyboardInterrupt.

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

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2012
    Messages
    335
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2012
    Messages : 335
    Par d�faut
    bonjour � tous,

    voil� ce que j'ai commenc� � faire.

    Code python : 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
    #!/usr/bin/python3
     
    # -*- coding:utf-8 -*-
     
    import socket
     
    import sys
     
    import threading
     
    def start () :
    	lang = (input("Entrez soit FR pour français soit EN pour anglais :  "))
    	print(lang)
    if (lang =="fr") :
    	print ("french")
    	if (lang =="en"):
    		print ("english")
    	else:
    		print ("veuillez recommencer , retry please ")
    start ()
     
    word=input("entrez le mot à traduire")
    file="dico.csv"
     
    def getElem(file, i, j):
        with open(file, 'r') as f:
            reader = csv.reader(f)
            for line in reader:
                if reader.line_num - 1 == i:
                    return line[j]

    il me met l'erreur suivante :
    erreur python 25 11 16h42.docx

    que dois-je changer ?
    pouvez-vous m'aider ?

  7. #7
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 772
    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 772
    Par d�faut
    Salut,

    Citation Envoy� par aertys Voir le message
    que dois-je changer ?
    pouvez-vous m'aider ?
    Si vous n'arrivez pas � comprendre que l'erreur est due � une mauvaise indentation de vos lignes de code, faire votre TP va �tre compliqu�.

    - 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. programmation Excel avec Python
    Par cibirsk dans le forum G�n�ral Python
    R�ponses: 3
    Dernier message: 25/04/2016, 10h42
  2. [XL-2010] programmation Excel avec Python ou VBA
    Par cibirsk dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 25/04/2016, 10h41
  3. R�ponses: 10
    Dernier message: 09/08/2015, 23h47
  4. programme pour Telnet sur @IP d'1 serveur avec Password
    Par mhd_tel dans le forum D�veloppement Mobile en Java
    R�ponses: 0
    Dernier message: 09/01/2009, 17h44
  5. comment d�marrer un programme.win32 avec python
    Par mr maggoo dans le forum Biblioth�ques tierces
    R�ponses: 4
    Dernier message: 19/12/2006, 10h49

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