Ajoute les fileno des clients
- lorque qu'un nouveau client se connecte - sur le server les messages sont prefixes avec le fileno
This commit is contained in:
parent
69e9816eb3
commit
1094327e31
|
@ -9,28 +9,38 @@ Networking test, client-server talking script
|
||||||
import socket
|
import socket
|
||||||
import select
|
import select
|
||||||
|
|
||||||
hote = ''
|
HOST = ''
|
||||||
port = 12800
|
PORT = 12800
|
||||||
|
|
||||||
main_connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
MSG_NEW_CLIENT = "Nouveau client: {}"
|
||||||
main_connection.bind((hote, port))
|
MSG_CLIENT_ID = "Client[{}] {}"
|
||||||
main_connection.listen(5)
|
|
||||||
print("Le serveur écoute à présent sur le port {}".format(port))
|
MAIN_CONNECTION = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
MAIN_CONNECTION.bind((HOST, PORT))
|
||||||
|
MAIN_CONNECTION.listen(5)
|
||||||
|
print("Le serveur écoute à présent sur le PORT {}".format(PORT))
|
||||||
|
|
||||||
server_on = True
|
server_on = True
|
||||||
connected_clients = []
|
connected_clients = []
|
||||||
while server_on:
|
while server_on:
|
||||||
# On va vérifier que de nouveaux clients ne demandent pas à se connecter
|
# On va vérifier que de nouveaux clients ne demandent pas à se connecter
|
||||||
# Pour cela, on écoute la main_connection en lecture
|
# Pour cela, on écoute la MAIN_CONNECTION en lecture
|
||||||
# On attend maximum 50ms
|
# On attend maximum 50ms
|
||||||
requested_connections, wlist, xlist = select.select([main_connection],
|
requested_connections, wlist, xlist = select.select(
|
||||||
[], [], 0.05)
|
[MAIN_CONNECTION],
|
||||||
|
[], [], 0.05
|
||||||
|
)
|
||||||
|
|
||||||
for connexion in requested_connections:
|
for connexion in requested_connections:
|
||||||
client_connection, infos_connexion = connexion.accept()
|
client_connection, infos_connexion = connexion.accept()
|
||||||
|
|
||||||
# On ajoute le socket connecté à la liste des clients
|
# On ajoute le socket connecté à la liste des clients
|
||||||
connected_clients.append(client_connection)
|
connected_clients.append(client_connection)
|
||||||
|
|
||||||
|
# id client
|
||||||
|
fileno = client_connection.fileno()
|
||||||
|
print(MSG_NEW_CLIENT.format(fileno))
|
||||||
|
|
||||||
# Maintenant, on écoute la liste des clients connectés
|
# Maintenant, on écoute la liste des clients connectés
|
||||||
# Les clients renvoyés par select sont ceux devant être lus (recv)
|
# Les clients renvoyés par select sont ceux devant être lus (recv)
|
||||||
# On attend là encore 50ms maximum
|
# On attend là encore 50ms maximum
|
||||||
|
@ -39,19 +49,25 @@ while server_on:
|
||||||
# Peut être levée
|
# Peut être levée
|
||||||
read_client_list = []
|
read_client_list = []
|
||||||
try:
|
try:
|
||||||
read_client_list, wlist, xlist = select.select(connected_clients,
|
read_client_list, wlist, xlist = select.select(
|
||||||
[], [], 0.05)
|
connected_clients,
|
||||||
|
[], [], 0.05
|
||||||
|
)
|
||||||
except select.error:
|
except select.error:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
# On parcourt la liste des clients à lire
|
# On parcourt la liste des clients à lire
|
||||||
for client in read_client_list:
|
for client in read_client_list:
|
||||||
|
|
||||||
# Client est de type socket
|
# Client est de type socket
|
||||||
msg_recu = client.recv(1024)
|
msg_recu = client.recv(1024)
|
||||||
|
|
||||||
# Peut planter si le message contient des caractères spéciaux
|
# Peut planter si le message contient des caractères spéciaux
|
||||||
msg_recu = msg_recu.decode()
|
msg_recu = msg_recu.decode()
|
||||||
print("Reçu {}".format(msg_recu))
|
|
||||||
client.send(b"-ok-")
|
client.send(b"-ok-")
|
||||||
|
|
||||||
|
print(MSG_CLIENT_ID.format(client.fileno(), msg_recu))
|
||||||
|
|
||||||
if msg_recu == "fin":
|
if msg_recu == "fin":
|
||||||
server_on = False
|
server_on = False
|
||||||
|
|
||||||
|
@ -59,4 +75,4 @@ print("Fermeture des connexions")
|
||||||
for client in connected_clients:
|
for client in connected_clients:
|
||||||
client.close()
|
client.close()
|
||||||
|
|
||||||
main_connection.close()
|
MAIN_CONNECTION.close()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user