Stanisław P.

Stanisław P. Software designer

Temat: Zamykanie socketa

Hej
Mam problem z połączeniem, które zostaje aktywne nawet po teoretycznym zamknięciu:

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(("0.0.0.0", 7227))
serversocket.listen(5)

try:
__while 1:
____(clientsocket, address) = serversocket.accept()
____try:
______print "got connection from %s" % repr(address)
______input = ""
______while len(input)==0 or (not input.endswith("\n\n")):
________input += clientsocket.recv(1024)
# ...............................................
# tu jeszcze jakiś kod
# ...............................................
____finally:
______clientsocket.shutdown(2)
______clientsocket.close()
finally:
__serversocket.shutdown(2)
__serversocket.close()

Kiedy program jest zatrzymany (ctrl+c, albo wyjątek) w czasie samego `serversocket.accept()` to wszystko jest ok, ale za każdym razem jak przerywa coś w wewnętrznym try'u, albo chwilę po rozłączeniu się klienta, to serversocket (0.0.0.0:7227) jest zamknięty, ale clientsocket ostatniego połączenia dalej jest w stanie TIME_WAIT - nawet po zakończeniu całego procesu python'a.
Netstat potwierdza, że na 7227 nikt nie słucha, ale listuje też normalne połączenie do ostatniego klienta, które znika dopiero po timeoucie.

Jakieś pomysły jak można zamknąć to połączenie naprawdę?

PS. jak tu można kod formatować? ....Stanisław Pitucha edytował(a) ten post dnia 29.04.08 o godzinie 14:44

konto usunięte

Temat: Zamykanie socketa

Jakieś pomysły jak można zamknąć to połączenie naprawdę?

Może użyj modułów asyncore i asynchat - rozwiążą problem same za ciebie - ciut wyższy poziom abstrakcjiPatryk Szymczak edytował(a) ten post dnia 29.04.08 o godzinie 22:06
Stanisław P.

Stanisław P. Software designer

Temat: Zamykanie socketa

Patryk Szymczak:
Może użyj modułów asyncore i asynchat - rozwiążą problem same za ciebie - ciut wyższy poziom abstrakcji

A ja nie lubię - wolę tak ręcznie ;)

konto usunięte

Temat: Zamykanie socketa

A ja nie lubię - wolę tak ręcznie ;)

No to tutaj masz wyłuszczone o co w tym chodzi:
http://hea-www.harvard.edu/~fine/Tech/addrinuse.html
Stanisław P.

Stanisław P. Software designer

Temat: Zamykanie socketa

Patryk Szymczak:

No to tutaj masz wyłuszczone o co w tym chodzi:
http://hea-www.harvard.edu/~fine/Tech/addrinuse.html

Ehh... dzięki - no tak - a ja problemu szukałem w pythonie :/ W C już mam w nawyku pisanie z REUSE, ale nie spodziewałem się, że będę musiał to dodać ręcznie i tutaj ;)

I tak kod został przepisane pod twisted... ale dobrze wiedzieć w takim razie, że python ma bindingi 1:1 do standardowej biblioteki.

konto usunięte

Temat: Zamykanie socketa

I tak kod został przepisane pod twisted...

Hmm, wow :) Szacun!
ale dobrze wiedzieć w takim razie, że python ma bindingi 1:1 do standardowej biblioteki.

Tak, mają - z mojego punktu widzenia, jest to ogromna zaleta.

Następna dyskusja:

ZAMYKANIE ROKU 2014 W NGO -...




Wyślij zaproszenie do