Bonjour,
J'utilise des sockets pour échanger des données entre deux PC.
Le PC1 sert de serveur.
Le PC2 sert de client. Le script python "client" établi une connexion au serveur, envoi une commande et se ferme.
Si une nouvelle commande doit être envoyée, une nouvelle connexion est établie.

Aujourd'hui, une fois que le script client s'est connecté une première fois au serveur et a envoyé une commande, il n'arrive plus à se connecter au serveur pour envoyer une nouvelle commande.

Auriez-vous une idée de l'origine de ce problème ?

Voici le code du 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import os, sys
import subprocess as sp
import socket
 
HOST = 'localhost'
PORT = 50000
counter = 0 #compteur de connexions etablies
 
CommandLine = list()
Running=True
Ending=True
 
##############################################
###           Partie serveur               ###
##############################################
#creation du socket
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
#liaison du socket a une adresse precise
try:
    mySocket.bind((HOST, PORT))
except socket.error:
    print("La liaison du socket a l adresse choisie, a echoue")
    sys.exit
 
#debug = open("debug_t.txt","w")
 
while (Ending==True):
    #attente de la requete de connexion d un client
    print("Serveur pret, en attente de requete")
    mySocket.listen(2)
 
    #Etablissement de la connexion
    connexion, adresse = mySocket.accept()
    counter += 1
    print("Client connecte, adresse IP %s, port %s" % (adresse[0], adresse[1]))
 
    #Dialogue avec le client
    msgServeur = "Vous etes connecte au serveur Codesys, envoyez vos messages"
    connexion.send(msgServeur.encode("Utf8")) 
    while (Running==True):
        msgServeur = "OK, commande recue"
        connexion.send(msgServeur.encode("Utf8"))
        msgClient = connexion.recv(1024)
        print(msgClient, "\n")
        if msgClient != "":
                CommandLine=(msgClient.split(" "))              
                for elem in CommandLine:
                    if elem=="Quit":
                        #debug.write("\nQuit\n")        
                        Running=False
                        Ending=True
                    if elem=="Exit":
                        #debug.write("\nExit\n")        
                        Running=False
                        Ending=False
                    if elem=="Force":
                        indice=CommandLine.index(elem)
                        if CommandLine[indice+1]=="1":
                            #print("Force app 1\n")
                            print(CommandLine[indice+3])
                        if CommandLine[indice+1]=="2":
                            #print("Force app 2\n")
                            print(CommandLine[indice+3])
 
    #Fermeture de la connexion
    #debug.close()                            
    connexion.send("fin".encode("Utf8"))
    print("Connexion interrompue")
    connexion.shutdown(socket.SHUT_RDWR)
    connexion.close()
mysocket.close()
Voici le code de test du 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
import socket, sys, time
 
HOST = 'localhost'
PORT = 50000
 
Ending=False
 
#creation du socket
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
#envoie d une requete de connexion au serveur
try :
    mySocket.connect((HOST, PORT))
except socket.error:
    print("La connexion a echouee")
    sys.exit()
print("Connexion etablie avec le serveur")
 
#Dialogue avec le serveur
msgServeur = mySocket.recv(1024).decode("Utf8")
 
print("S1>", msgServeur)
msgClient = "Force 1 Balance TRUE "
mySocket.send(msgClient.encode("Utf8"))
msgServeur = mySocket.recv(1024).decode("Utf8")
mySocket.close()
time.sleep(5)
 
#envoie d une requete de connexion au serveur
try :
    mySocket.connect((HOST, PORT))
except socket.error:
    print("La connexion a echouee")
    sys.exit()
print("Connexion etablie avec le serveur")
#Dialogue avec le serveur
msgServeur = mySocket.recv(1024).decode("Utf8")
print("S2>", msgServeur)
msgClient = "Force 1 DD_Balance FALSE "
mySocket.send(msgClient.encode("Utf8"))
msgServeur = mySocket.recv(1024).decode("Utf8")
mySocket.close()