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 :
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 ?
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()
Merci, au revoir
Partager