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 :

Probleme d'optimisation serveur [Python 3.X]


Sujet :

Python

  1. #21
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 54
    Points : 28
    Points
    28
    Par défaut
    J'AI TERMINER ENFIN TOUS FONCTIONNE !
    J'ai refait un serveur beaucoups plus court par rapport a l'ancien suite au nouveau 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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    from socket import socket, AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR
    import threading
    from tkinter import *
     
    def Etat_0():
     
        Etat_reseau.set("Bon")
        info_etat.config(text="Etat du reseau: Aucun probleme connue")
        print("Update", Etat_reseau.get())
     
     
    def Etat_1():
     
        Etat_reseau.set("Moyen")
        info_etat.config(text="Etat du reseau: Presence de ralentissement sur le reseau")
        print("Update", Etat_reseau.get())
     
     
    def Etat_2():
     
        Etat_reseau.set("Mauvais")
        info_etat.config(text="Etat du reseau: Reseau indisponible")
        print("Update", Etat_reseau.get())
     
     
    def Serveur():
     
        global Etat_Client
     
        SocketClient = socket(AF_INET, SOCK_STREAM)
        SocketClient.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
        SocketClient.bind(("",50000))
        SocketClient.listen(10)
        print("Ecoute...")
        Etat_Client = Etat_reseau.get()
     
     
        while True: #Connecte les clients et leur indique l'etat reseau
     
            (cs, (ip, port)) = SocketClient.accept()    
     
            if ip not in Client_online:
                print("[+] Nouveau client %s %s" % (ip, port))
                nv_client = True
     
            Client_online[ip] = port
            cs.send(str(Etat_reseau.get()).encode())
            if nv_client == True:
                print("Ecoute")
                nv_client = False
     
     
     
    class Ecoute(threading.Thread):
     
        def __init__(self, ip, port, Etat_reseau):
     
            threading.Thread.__init__(self)
     
        def run(self):
     
            Serveur()
     
     
    Client_online = {}
    ip = ""
    port = 0
     
     
    fenetre_choix = Tk()
    fenetre_choix.title("Panel d'administration")
    fenetre_choix.configure(bg = "#00B3D7")
     
    Etat_reseau = StringVar()
    Etat_reseau.set("Bon") #0: bon 1:moyen 2:mauvais
     
    info_etat = Label(fenetre_choix, text = "Etat du reseau: Aucun probleme connue" , bg = "#00B3D7")
    info_action = Label(fenetre_choix, text = "Action en cours: Aucune", bg = "#00B3D7")
    button_bon = Button(fenetre_choix, text = "Aucun probleme connue",font="arial 12 bold",command=Etat_0, bg = "#33FF00", relief=FLAT)
    button_moy = Button(fenetre_choix, text = "Presence de ralentissement sur le reseau",font="arial 12 bold", command=Etat_1, bg = "#FFFF00", relief=FLAT)
    button_mau = Button(fenetre_choix, text = "Reseau indisponible",font="arial 12 bold",command=Etat_2, bg = "#CC0000", relief=FLAT)
    taille_x_l = Label(fenetre_choix, bg = "#00B3D7")
    taille_y_b = Label(fenetre_choix, bg = "#00B3D7")
    info_ip = Label(fenetre_choix, text = "Quelle est l'etat du reseau ?", bg = "#00B3D7")
     
    info_etat.pack(side=TOP)
    info_action.pack(side=TOP,pady=20)
    taille_x_l.pack(side=TOP,padx=380)
    button_bon.pack(side=TOP,padx=50,pady=10)
    button_moy.pack(side=TOP,padx=50,pady=10)
    button_mau.pack(side=TOP,padx=50,pady=10)
    taille_y_b.pack(side=TOP,pady=40)
    info_ip.pack(side=BOTTOM)
     
     
    newthread_Ecoute = Ecoute(ip, port, Etat_reseau)
    newthread_Ecoute.start()
     
    fenetre_choix.mainloop()
    Et voila le nouveau 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
    62
    63
    64
    65
    66
    from PyQt4 import QtGui, QtCore
    import sys
    from socket import socket, AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR
    import time
    import threading
     
    class SystemTrayIcon(QtGui.QSystemTrayIcon):
     
        def __init__(self, icon, parent=None):
            global icone
            QtGui.QSystemTrayIcon.__init__(self, icon, parent)
            menu = QtGui.QMenu(parent)
            changeicon = menu.addAction("Update")
            exitAction = menu.addAction("Exit")
            self.setContextMenu(menu)
            exitAction.triggered.connect(QtGui.qApp.quit)
            changeicon.triggered.connect(self.updateIcon)
            icone = "vert"
     
        def updateIcon(self):
            global icone, m
            #print("m=",m,"|",len(m))
     
            if m.decode() == "Bon":
                self.setIcon(QtGui.QIcon("vert.png"))
                icone = "jaune"
            elif m.decode() == "Moyen":
                self.setIcon(QtGui.QIcon("jaune.png"))
                icone = "rouge"
            else:
                self.setIcon(QtGui.QIcon("rouge.png"))
                icone = "Mauvais"
     
        def get_etat_reseau():
            global m
     
            sd = socket(AF_INET, SOCK_STREAM)
            sd.connect(("192.168.1.28",50000))
            data = []
            while True:
                m = sd.recv(512)
                #print("M",m)
                if not m:
                    break
                data.append(m.decode())
     
                return ''.join(data)
     
    def main():
        app = QtGui.QApplication(sys.argv)
     
        w = QtGui.QWidget()
        trayIcon = SystemTrayIcon(QtGui.QIcon("vert.png"), w)
     
        trayIcon.show()
     
        while True:
                print (SystemTrayIcon.get_etat_reseau())
                trayIcon.updateIcon()
                time.sleep(1)
     
        sys.exit(app.exec_())
     
    if __name__ == '__main__':
     
        main()
    Le prototype est fini mais je suis quand même preneur de conseil, je me suis étonner quand g vue le client c'est tous seul reconnecter au serveur après avoir que le serv est crash.

    Images attachées Images attachées     

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Compiler du java en natif & Optimisation serveur socket
    Par Skreo dans le forum API standards et tierces
    Réponses: 32
    Dernier message: 09/07/2006, 16h31
  2. [VBA-E]Probleme d'optimisation
    Par sk8bcn dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 30/05/2006, 20h14
  3. Problèmes sur le serveur forum ?
    Par Baptiste Wicht dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 19
    Dernier message: 24/04/2006, 16h20
  4. [EasyPHP] probleme include d'serveur distant au serveur local EasyPHP?
    Par jeff1985 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 04/04/2006, 11h14
  5. Problemes de connexion Serveur Interbase
    Par OasisMan dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/03/2005, 08h39

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