Ich habe einen Dateiserver in Golang erstellt und rufen Sie die Close() -Methode auf dem Listener.Golang hält Datei Server Socket geöffnet nach dem Schließen
Wenn ich versuche, über eine neue Webverbindung auf den Port zuzugreifen, wird der Socket geschlossen und ich kann nicht auf die Website zugreifen.
Wie auch immer, wenn ich die Seite mit einer Verbindung referenziere, die bereits hergestellt wurde .... die Seite wird neu geladen, als ob der Sockel nie geschlossen wurde? Ich bin sogar in der Lage, das Dateisystem zu durchsuchen.
Ich bemerkte nach 30 oder so Minuten scheint die Steckdose zu schließen.
Gibt es etwas, das ich vermisse, um den Socket zu zwingen, alle vorhandenen Verbindungen zu löschen, um zu verhindern, dass Menschen auf den Dateiserver zugreifen?
var fileListener net.Listener
host_string = "127.0.0.1:8080"
fileListener, _ = net.Listen("tcp", host_string)
server := &http.Server{Addr: host_string, Handler:
http.FileServer(http.Dir("/"))}
go func() { server.Serve(fileListener) }()
fileListener.Close()
Würden Sie den Handler mit einer TimeoutHandler-Hilfe umhüllen? (https://golang.org/pkg/net/http/#TimeoutHandler) –
Ich folgte Ihrer Empfehlung der Verwendung von ConnState. Funktioniert perfekt! Vielen Dank! –