Bonjour,
(J'ai posté ce message sur une autre discussion et il m'a été conseillé d'en ouvrir une nouvelle)
J'essaye de faire un GUI côté serveur ; est-il possible de faire une interface graphique autour du serveur avec un bouton 'Quit' (en Tkinter) qui interromps la connexion ?
Je suis bloqué par la boucle infinie qui bloque ma fenêtre graphique, et en particulier le bouton 'Close program' que je souhaitais avoir à disposition pour arrêter "d'écouter".
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 tkinter as tk import socket HOSTPORT = ('localhost',1234) BUFSIZE = 1024 CODE = 'utf8' class App(tk.Tk) : def __init__(self) : tk.Tk.__init__(self) self.geometry('100x100') # Create socket self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.bind(HOSTPORT) # Start connection button = tk.Button(self, text='Listen', command=self.listen) button.pack() # Close GUI, even if connection opened button = tk.Button(self, text='Close program', command=self.destroy) button.pack() def listen(self) : while True : self.socket.listen(5) conn, address = self.socket.accept() data = conn.recv(BUFSIZE) print('Client says %s'%data.decode(CODE)) conn.close() self.socket.close() app = App() app.mainloop()
Est-il nécessaire de créer un client "local" pour piloter le serveur (local également) et utiliser le module select pour que le serveur écoute simultanément les instruction de l'opérateur (côté serveur) et du client (potentiellement machine distante) ?
Je me considère comme plutôt à l'aide avec le module Tkinter mais les projets que j'ai eu jusqu'à présent n'ont jamais impliqué les modules socket, select et thread que je découvre depuis quelques jours...
Bien cordialement !
Partager