Serwer Pythona „Zwykle dozwolone jest tylko jedno użycie każdego adresu gniazda”
Próbuję utworzyć bardzo prosty serwer w Pythonie, który nasłuchuje na porcie, tworzy połączenie TCP, gdy klient próbuje się połączyć, odbiera dane, wysyła coś z powrotem, a następnie nasłuchuje ponownie (i powtarza proces w nieskończoność). Oto, co mam do tej pory:
from socket import *
serverName = "localhost"
serverPort = 4444
BUFFER_SIZE = 1024
s = socket(AF_INET, SOCK_STREAM)
s.bind((serverName, serverPort))
s.listen(1)
print "Server is ready to receive data..."
while 1:
newConnection, client = s.accept()
msg = newConnection.recv(BUFFER_SIZE)
print msg
newConnection.send("hello world")
newConnection.close()
Czasami wydaje się, że działa to doskonale (jeśli wskazuję przeglądarkę na „localhost: 4444”, serwer drukuje żądanie HTTP GET, a strona internetowa drukuje tekst „witaj świecie”). Ale sporadycznie pojawia się następujący komunikat o błędzie, gdy próbuję uruchomić serwer po zamknięciu go w ciągu ostatnich kilku minut:
Traceback (most recent call last):
File "path\server.py", line 8, in <module>
s.bind((serverName, serverPort))
File "C:\Python27\lib\socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted
Programuję w Pythonie za pomocą Windows 7. Jakieś pomysły na to, jak to naprawić?