je fais bien un socket.shutdown(1) puis un socket.close()
le tout correctement les thread se termine tout seul ...
et quand j'arrete le tout probleme avec bind tout de suite apres
j'ai essayé de tout lire sur google mais bon ya un truc qui m'echappe
bon les clients c'est des telnet qui sont fermés coté serveur le probleme viendrait t il de la ?
Merci pour vos remarque
A+ chris
J'ai du mal à comprendre: ton code est côté client ou serveur ... ou les deux ?
hg
chris
chris wrote:
Bonjour,
comment on ferme correctement une socket ?
je fais bien un socket.shutdown(1) puis un socket.close()
le tout correctement les thread se termine tout seul ...
et quand j'arrete le tout probleme avec bind tout de suite apres
j'ai essayé de tout lire sur google mais bon ya un truc qui m'echappe
bon les clients c'est des telnet qui sont fermés coté serveur le probleme viendrait t il de la ?
Merci pour vos remarque
A+ chris
J'ai du mal à comprendre: ton code est côté client ou serveur ... ou les deux ?
hg
Juste coté serveur pour l'instant , le coté client telnet va très bien en gros une classe Instance Qui Lance une classe Serveur(issue de Thread) Qui lance une classe client(issue de Thread) pour chaque connection
En gros en me connectant je tape shutdown et cela - met a jour un flag Shutdown sur l'instance Serveur - arrete le thread
Le Thread serveur stoppe sa boucle et arrete les connexions des autres Thread connecté
puis il fait un socket.shutdown(1) puis un socket.close() et c'est tout il rend la main a Instance qui doit s'arreter normalement
mais si je refais tout de suite après le même script python bind me renvoie une erreur comme si tout ca ne s'était pas bien arrétée
Note : j'utilise des sockets non bloquantes
des remarques , une piste un retour d'expérience ?
Merci et a+
chris wrote:
Bonjour,
comment on ferme correctement une socket ?
je fais bien un socket.shutdown(1)
puis un socket.close()
le tout correctement
les thread se termine tout seul ...
et quand j'arrete le tout probleme avec bind tout de suite apres
j'ai essayé de tout lire sur google mais bon
ya un truc qui m'echappe
bon les clients c'est des telnet qui sont fermés coté serveur
le probleme viendrait t il de la ?
Merci pour vos remarque
A+
chris
J'ai du mal à comprendre: ton code est côté client ou serveur ... ou les
deux ?
hg
Juste coté serveur pour l'instant , le coté client telnet va très bien
en gros
une classe Instance
Qui Lance une classe Serveur(issue de Thread)
Qui lance une classe client(issue de Thread) pour chaque connection
En gros en me connectant je tape shutdown et cela
- met a jour un flag Shutdown sur l'instance Serveur
- arrete le thread
Le Thread serveur stoppe sa boucle et
arrete les connexions des autres Thread connecté
puis il fait un socket.shutdown(1) puis un socket.close()
et c'est tout il rend la main a Instance qui doit s'arreter normalement
mais si je refais tout de suite après le même script python
bind me renvoie une erreur comme si tout ca ne s'était pas bien arrétée
Note : j'utilise des sockets non bloquantes
des remarques , une piste un retour d'expérience ?
je fais bien un socket.shutdown(1) puis un socket.close()
le tout correctement les thread se termine tout seul ...
et quand j'arrete le tout probleme avec bind tout de suite apres
j'ai essayé de tout lire sur google mais bon ya un truc qui m'echappe
bon les clients c'est des telnet qui sont fermés coté serveur le probleme viendrait t il de la ?
Merci pour vos remarque
A+ chris
J'ai du mal à comprendre: ton code est côté client ou serveur ... ou les deux ?
hg
Juste coté serveur pour l'instant , le coté client telnet va très bien en gros une classe Instance Qui Lance une classe Serveur(issue de Thread) Qui lance une classe client(issue de Thread) pour chaque connection
En gros en me connectant je tape shutdown et cela - met a jour un flag Shutdown sur l'instance Serveur - arrete le thread
Le Thread serveur stoppe sa boucle et arrete les connexions des autres Thread connecté
puis il fait un socket.shutdown(1) puis un socket.close() et c'est tout il rend la main a Instance qui doit s'arreter normalement
mais si je refais tout de suite après le même script python bind me renvoie une erreur comme si tout ca ne s'était pas bien arrétée
Note : j'utilise des sockets non bloquantes
des remarques , une piste un retour d'expérience ?
Merci et a+
maric
chris wrote:
...
des remarques , une piste un retour d'expérience ?
Merci et a+
Oui j'ai rencontrer le même problème, j'avais écrit un petit serveur réseaux pendant une formation linux pour donner un exemple à mes auditeurs, et tout se passait comme si les appels successif à shutdown et close ne suffisait pas à libérer les ressource système, la socket restait ouverte et il faut attendre que le kernel la nettoie tout seul pour pouvoir l'ouvrir de nouveau.
Ceci dit je me souviens plus de la solution, tu pourrais préciser l'os et la version de python, je ferais un essai dès que je remets la main sur ce script.
chris wrote:
...
des remarques , une piste un retour d'expérience ?
Merci et a+
Oui j'ai rencontrer le même problème, j'avais écrit un petit serveur
réseaux pendant une formation linux pour donner un exemple à mes
auditeurs, et tout se passait comme si les appels successif à shutdown
et close ne suffisait pas à libérer les ressource système, la socket
restait ouverte et il faut attendre que le kernel la nettoie tout seul
pour pouvoir l'ouvrir de nouveau.
Ceci dit je me souviens plus de la solution, tu pourrais préciser l'os
et la version de python, je ferais un essai dès que je remets la main
sur ce script.
des remarques , une piste un retour d'expérience ?
Merci et a+
Oui j'ai rencontrer le même problème, j'avais écrit un petit serveur réseaux pendant une formation linux pour donner un exemple à mes auditeurs, et tout se passait comme si les appels successif à shutdown et close ne suffisait pas à libérer les ressource système, la socket restait ouverte et il faut attendre que le kernel la nettoie tout seul pour pouvoir l'ouvrir de nouveau.
Ceci dit je me souviens plus de la solution, tu pourrais préciser l'os et la version de python, je ferais un essai dès que je remets la main sur ce script.
hg
chris wrote:
chris wrote:
Bonjour,
comment on ferme correctement une socket ?
je fais bien un socket.shutdown(1) puis un socket.close()
le tout correctement les thread se termine tout seul ...
et quand j'arrete le tout probleme avec bind tout de suite apres
j'ai essayé de tout lire sur google mais bon ya un truc qui m'echappe
bon les clients c'est des telnet qui sont fermés coté serveur le probleme viendrait t il de la ?
Merci pour vos remarque
A+ chris
J'ai du mal à comprendre: ton code est côté client ou serveur ... ou les deux ?
hg
Juste coté serveur pour l'instant , le coté client telnet va très bien en gros une classe Instance Qui Lance une classe Serveur(issue de Thread) Qui lance une classe client(issue de Thread) pour chaque connection
En gros en me connectant je tape shutdown et cela - met a jour un flag Shutdown sur l'instance Serveur - arrete le thread
Le Thread serveur stoppe sa boucle et arrete les connexions des autres Thread connecté
puis il fait un socket.shutdown(1) puis un socket.close() et c'est tout il rend la main a Instance qui doit s'arreter normalement
mais si je refais tout de suite après le même script python bind me renvoie une erreur comme si tout ca ne s'était pas bien arrétée
Note : j'utilise des sockets non bloquantes
des remarques , une piste un retour d'expérience ?
Merci et a+
Je n'utilise pas le shutdown côté serveur (peut-être une erreur).
1) fais-tu un join pour t'assurer que tous tes clients sont bien partis ? 2) fermes-tu ton socket "master" ensuite ?
Le fait que ton bind suivant plante montre que tu as encore des connexions "en l'air"
hg
chris wrote:
chris wrote:
Bonjour,
comment on ferme correctement une socket ?
je fais bien un socket.shutdown(1)
puis un socket.close()
le tout correctement
les thread se termine tout seul ...
et quand j'arrete le tout probleme avec bind tout de suite apres
j'ai essayé de tout lire sur google mais bon
ya un truc qui m'echappe
bon les clients c'est des telnet qui sont fermés coté serveur
le probleme viendrait t il de la ?
Merci pour vos remarque
A+
chris
J'ai du mal à comprendre: ton code est côté client ou serveur ... ou les
deux ?
hg
Juste coté serveur pour l'instant , le coté client telnet va très bien
en gros
une classe Instance
Qui Lance une classe Serveur(issue de Thread)
Qui lance une classe client(issue de Thread) pour chaque connection
En gros en me connectant je tape shutdown et cela
- met a jour un flag Shutdown sur l'instance Serveur
- arrete le thread
Le Thread serveur stoppe sa boucle et
arrete les connexions des autres Thread connecté
puis il fait un socket.shutdown(1) puis un socket.close()
et c'est tout il rend la main a Instance qui doit s'arreter normalement
mais si je refais tout de suite après le même script python
bind me renvoie une erreur comme si tout ca ne s'était pas bien arrétée
Note : j'utilise des sockets non bloquantes
des remarques , une piste un retour d'expérience ?
Merci et a+
Je n'utilise pas le shutdown côté serveur (peut-être une erreur).
1) fais-tu un join pour t'assurer que tous tes clients sont bien partis ?
2) fermes-tu ton socket "master" ensuite ?
Le fait que ton bind suivant plante montre que tu as encore des
connexions "en l'air"
je fais bien un socket.shutdown(1) puis un socket.close()
le tout correctement les thread se termine tout seul ...
et quand j'arrete le tout probleme avec bind tout de suite apres
j'ai essayé de tout lire sur google mais bon ya un truc qui m'echappe
bon les clients c'est des telnet qui sont fermés coté serveur le probleme viendrait t il de la ?
Merci pour vos remarque
A+ chris
J'ai du mal à comprendre: ton code est côté client ou serveur ... ou les deux ?
hg
Juste coté serveur pour l'instant , le coté client telnet va très bien en gros une classe Instance Qui Lance une classe Serveur(issue de Thread) Qui lance une classe client(issue de Thread) pour chaque connection
En gros en me connectant je tape shutdown et cela - met a jour un flag Shutdown sur l'instance Serveur - arrete le thread
Le Thread serveur stoppe sa boucle et arrete les connexions des autres Thread connecté
puis il fait un socket.shutdown(1) puis un socket.close() et c'est tout il rend la main a Instance qui doit s'arreter normalement
mais si je refais tout de suite après le même script python bind me renvoie une erreur comme si tout ca ne s'était pas bien arrétée
Note : j'utilise des sockets non bloquantes
des remarques , une piste un retour d'expérience ?
Merci et a+
Je n'utilise pas le shutdown côté serveur (peut-être une erreur).
1) fais-tu un join pour t'assurer que tous tes clients sont bien partis ? 2) fermes-tu ton socket "master" ensuite ?
Le fait que ton bind suivant plante montre que tu as encore des connexions "en l'air"
je fais bien un socket.shutdown(1) puis un socket.close()
le tout correctement les thread se termine tout seul ...
et quand j'arrete le tout probleme avec bind tout de suite apres
j'ai essayé de tout lire sur google mais bon ya un truc qui m'echappe
bon les clients c'est des telnet qui sont fermés coté serveur le probleme viendrait t il de la ?
Merci pour vos remarque
Une piste... option SO_REUSEADDR
A+ chris
Pierre Hanser
chris wrote:
Bonjour,
comment on ferme correctement une socket ?
Une piste... option SO_REUSEADDR
sans cette option, c'est la stack IP de l'os qui fait respecter un délai pour eviter de risquer de se melanger les pinceaux entre les paquets de 2 sessions consecutives
chris wrote:
Bonjour,
comment on ferme correctement une socket ?
Une piste... option SO_REUSEADDR
sans cette option, c'est la stack IP de l'os qui
fait respecter un délai pour eviter de risquer
de se melanger les pinceaux entre les paquets
de 2 sessions consecutives
sans cette option, c'est la stack IP de l'os qui fait respecter un délai pour eviter de risquer de se melanger les pinceaux entre les paquets de 2 sessions consecutives
chris
Je n'utilise pas le shutdown côté serveur (peut-être une erreur).
J'ai essaye mais sans plus de resultat
1) fais-tu un join pour t'assurer que tous tes clients sont bien partis ?
non mais for th in serveur.clients: th.conn.close()
et en fait je vais verifier mais si cela se trouve j'oubli le join()
2) fermes-tu ton socket "master" ensuite ?
Oui
Le fait que ton bind suivant plante montre que tu as encore des connexions "en l'air"
hg
Merci A+
Je n'utilise pas le shutdown côté serveur (peut-être une erreur).
J'ai essaye mais sans plus de resultat
1) fais-tu un join pour t'assurer que tous tes clients sont bien partis ?
non mais
for th in serveur.clients:
th.conn.close()
et en fait je vais verifier mais si cela se trouve j'oubli le join()
2) fermes-tu ton socket "master" ensuite ?
Oui
Le fait que ton bind suivant plante montre que tu as encore des
connexions "en l'air"
Je n'utilise pas le shutdown côté serveur (peut-être une erreur).
J'ai essaye mais sans plus de resultat
1) fais-tu un join pour t'assurer que tous tes clients sont bien partis ?
non mais for th in serveur.clients: th.conn.close()
et en fait je vais verifier mais si cela se trouve j'oubli le join()
2) fermes-tu ton socket "master" ensuite ?
Oui
Le fait que ton bind suivant plante montre que tu as encore des connexions "en l'air"
hg
Merci A+
Laurent Pointal
chris wrote:
Bonjour,
comment on ferme correctement une socket ?
Une piste... option SO_REUSEADDR
sans cette option, c'est la stack IP de l'os qui fait respecter un délai pour eviter de risquer de se melanger les pinceaux entre les paquets de 2 sessions consecutives
Oui, mais si le délai est un peu long, ça pourrais expliquer le "et quand j'arrete le tout probleme avec bind tout de suite apres" de chris.
chris wrote:
Bonjour,
comment on ferme correctement une socket ?
Une piste... option SO_REUSEADDR
sans cette option, c'est la stack IP de l'os qui
fait respecter un délai pour eviter de risquer
de se melanger les pinceaux entre les paquets
de 2 sessions consecutives
Oui, mais si le délai est un peu long, ça pourrais expliquer le
"et quand j'arrete le tout probleme avec bind tout de suite apres"
de chris.
sans cette option, c'est la stack IP de l'os qui fait respecter un délai pour eviter de risquer de se melanger les pinceaux entre les paquets de 2 sessions consecutives
Oui, mais si le délai est un peu long, ça pourrais expliquer le "et quand j'arrete le tout probleme avec bind tout de suite apres" de chris.
hg
chris wrote:
Je n'utilise pas le shutdown côté serveur (peut-être une erreur).
J'ai essaye mais sans plus de resultat
1) fais-tu un join pour t'assurer que tous tes clients sont bien partis ?
non mais for th in serveur.clients: th.conn.close()
et en fait je vais verifier mais si cela se trouve j'oubli le join()
2) fermes-tu ton socket "master" ensuite ?
Oui
Le fait que ton bind suivant plante montre que tu as encore des connexions "en l'air"
hg
Merci A+
As-tu des try: except: dans tes threads clients ?
Puisque tu les plante depuis ta tache principale, ils risquent de ne pas aimer.
... je te conseille d'utiliser join.
hg
chris wrote:
Je n'utilise pas le shutdown côté serveur (peut-être une erreur).
J'ai essaye mais sans plus de resultat
1) fais-tu un join pour t'assurer que tous tes clients sont bien partis ?
non mais
for th in serveur.clients:
th.conn.close()
et en fait je vais verifier mais si cela se trouve j'oubli le join()
2) fermes-tu ton socket "master" ensuite ?
Oui
Le fait que ton bind suivant plante montre que tu as encore des
connexions "en l'air"
hg
Merci
A+
As-tu des try: except: dans tes threads clients ?
Puisque tu les plante depuis ta tache principale, ils risquent de ne pas
aimer.