bonjour tout le monde,
j'ai réalisé un serveur multi connexion et je le fait tourner en mode concurrent avec l'appel systeme fork.
J'ai un problème avec mon serveur et le rpocessus fils généré par le fork : lorsque le client arrete la connexion avec le serveur, le processus qui gérait sa connexion continue de tourner alors qu'il devrai plutot s'arreter. Je sais pas si je suis assez clair, mais 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
#!/usr/bin/python
import os
import socket

listening_socket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host=socket.gethostname()
port=50001
entry=(host, port)
try :
    listening_socket.bind(entry)
    listening_socket.listen(5)
except socket.error, err_msg :
    print "Error :",err_msg
    
while 1 :
    (serv_sock, serv_addr)=listening_socket.accept()
    pid=os.fork()
    if pid :
        serv_sock.close()
        #continue
    else :
        listening_socket.close()
        print "server",os.getpid(),"now connected with",serv_sock.getpeername()
        welcome_msg="welcome to"+host
        serv_sock.sendall(welcome_msg)
        while 1:
            cl_msg=serv_sock.recv(1024)
            if cl_msg=="\n" :
                print "closing connexion with :",sev_sock.getpeername()
                serv_sock.close()
                print "closed"
                sys.exit(0)
            else :
                print "from",serv_sock.getpeername(),":"
                print cl_msg
                serv_sock.sendall(cl_msg)
        sys.exit()
lorsque le client envoie "\n" au processus coté serveur, celui continue sa boucle while et affiche "from ..." sans jamais s'arrêter. Pouvez vous m'expliquer ce qu'il se passe s'il vous plaît ?
Merci, au revoir