Ultimamente mi sto scontrando cone le idiosincrasie di Windows senza trovare una via di uscita. Prendiamo in esame il seguente codice:

import socket

host = ''
port = 50000
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
    client, address = s.accept()
    data = client.recv(size)
    if data:
        client.send(data)
    client.close()

Il codice non e` altri che un normale echo server, che apre il suo socket e si mette in ascolto delle richieste dei client. Il problema e` che che su ambienti *nix (o meglio, su Linux, visto che non ho altri sistemi *nix su cui provare ;) ) non solo funziona bene, ma basta un CTRL + C (SIGINT) per terminare il processo ed avere di nuovo la shell libera. Su Windows pero` a quanto pare non funziona, ovvero l'unico modo per fermare il processo e` killandolo brutalmente, cosa non sempre fattibile (e.g. se faccio girare l'echo server come servizio non posso fermarlo dalla schermata dei servizi). C'e` un modo per aggirare questa cosa che non sia "abbandona Windows"? :)

Enrico
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a