Bonjour,

je ne suis pas un expert, mais j'essaye malgré les tutos, de réaliser une communication réseaux entre deux programmes.
Ce programme n'est autre que deux fois le même, sur deux machines différentes.

Dans le cadre de test j'ai créer deux fichiers présent sur chaque machine. L'un est un fichier serveur qui écoute et gère les connexion.
L'autre est un fichier client.

J'ai donc exécuter un fichier par machine, et j'arrive à me connecter, et du client à envoyer des messages au fichier serveur.
Malheureusement je ne comprend pas comment le serveur peut envoyer un message au client et comment il peut faire la différence entre un client et un autre.

pouvez vous m'aider svp? je vous met mes code de mes deux fichiers.

Code 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
import socket
 
hote = "127.0.0.0"
port = 12800
 
connexion_avec_serveur = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connexion_avec_serveur.connect((hote, port))
print("Connexion etablie avec le serveur sur le port {}".format(port))
 
msg_a_envoyer = b""
while msg_a_envoyer != b"fin":
    msg_a_envoyer = input("> ")
    # Peut planter si vous tapez des caracteres speciaux
    msg_a_envoyer = msg_a_envoyer.encode()
    # On envoie le message
    connexion_avec_serveur.send(msg_a_envoyer)
    msg_recu = connexion_avec_serveur.recv(1024)
    print(msg_recu.decode()) # Le encore, peut planter s il y a des accents
 
print("Fermeture de la connexion")
connexion_avec_serveur.close()
Code serveur :
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
import socket
import select
 
hote = ''
port = 12800
 
connexion_principale = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connexion_principale.bind((hote, port))
connexion_principale.listen(5)
print("Le serveur ecoute a present sur le port {}".format(port))
 
serveur_lance = True
clients_connectes = []
while serveur_lance:
    # On va verifier que de nouveaux clients ne demandent pas a se connecter
    # Pour cela, on ecoute la connexion_principale en lecture
    # On attend maximum 50ms
    connexions_demandees, wlist, xlist = select.select([connexion_principale],
        [], [], 0.05)
 
    for connexion in connexions_demandees:
        connexion_avec_client, infos_connexion = connexion.accept()
        # On ajoute le socket connecte a la liste des clients
        clients_connectes.append(connexion_avec_client)
 
    # Maintenant, on ecoute la liste des clients connectes
    # Les clients renvoyes par select sont ceux devant etre lus (recv)
    # On attend la encore 50ms maximum
    # On enferme l appel a select.select dans un bloc try
    # En effet, si la liste de clients connectes est vide, une exception
    # Peut etre levee
    clients_a_lire = []
    try:
        clients_a_lire, wlist, xlist = select.select(clients_connectes,
                [], [], 0.05)
    except select.error:
        pass
    else:
        # On parcourt la liste des clients a lire
        for client in clients_a_lire:
            # Client est de type socket
            msg_recu = client.recv(1024)
            # Peut planter si le message contient des caracteres speciaux
            msg_recu = msg_recu.decode()
            print("Reçu {}".format(msg_recu))
            client.send(b"5 / 5")
            if msg_recu == "fin":
                serveur_lance = False
 
print("Fermeture des connexions")
for client in clients_connectes:
    client.close()
 
connexion_principale.close()
Je vous remercie par avance.