[Python] Socket windows

Enrico Bianchi enrico.bianchi a ymail.com
Lun 26 Maggio 2014 12:57:14 CEST


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


Maggiori informazioni sulla lista Python