Linux 关闭后,Golang保持文件服务插座打开

Linux 关闭后,Golang保持文件服务插座打开,linux,macos,sockets,go,Linux,Macos,Sockets,Go,我在golang中创建了一个文件服务器,并在侦听器上调用Close()方法 当我尝试访问新Web连接上的端口时,套接字似乎已关闭,我无法访问该网站 如果我引用一个已经建立了连接的页面。。。。页面重新加载正常,就像套接字从未关闭一样?我甚至还能浏览文件系统 大约30分钟后,我注意到插座似乎被强行关闭 是否缺少强制套接字删除所有现有连接以阻止人们访问文件服务器的内容 var fileListener net.Listener host_string = "127.0.0.1:8080" fileLi

我在golang中创建了一个文件服务器,并在侦听器上调用Close()方法

当我尝试访问新Web连接上的端口时,套接字似乎已关闭,我无法访问该网站

如果我引用一个已经建立了连接的页面。。。。页面重新加载正常,就像套接字从未关闭一样?我甚至还能浏览文件系统

大约30分钟后,我注意到插座似乎被强行关闭

是否缺少强制套接字删除所有现有连接以阻止人们访问文件服务器的内容

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()

无法关闭空闲的HTTP/1.1或HTTP2连接。目前有一个悬而未决的问题,但没有立即的计划。请注意,一旦关闭侦听器,服务器将不接受新连接;您正在重复使用相同的连接

如果要强制关闭所有连接,则需要自己使用
ConnState
来记录活动的TCP连接


您还可以在每个响应上设置处理程序
Connection:close
,但如果客户端需要发出一个以上的请求,这将使http服务器的效率大大降低

用TimeoutHandler包装处理程序会有帮助吗?()我遵照你的建议使用康奈特。很好用!谢谢