强制关闭TCP连接处于CLOSE-WAIT状态

时间:2019-04-01 13:54:53

标签: c# sockets tcp video-streaming

我的应用程序正在通过本地主机上的外部插件请求m3u8(HLS)视频流(例如192.168.0.108:port/foobar.ts)。在该本地主机上,我有HttpListener侦听该文件请求并对其进行验证。并将该文件的下载命令发送到服务器。文件下载时,它会使用HttpListenerContext.Response.OutputStream()流回到插件。如果互联网连接速度足够快,它将在可能的情况下预先下载即将到来的片段。

只要下载整个.ts片段,此方法就可以正常工作。但是,当用户决定在通过HttpListenerContext.Response.OutputStream()发送数据的过程中切换视频时,则会导致套接字异常System.IO.IOException: Unable to write data to the transport connection: The socket has been shut down. ---> System.Net.Sockets.SocketException: The socket has been shut down

无论何时发生这种情况,“鬼”连接似乎都在处于CLOSE-WAIT状态的后台保持打开状态。根据{{​​1}} enter image description here在rx_queue中有1个字节 只要该应用程序处于活动状态,此连接就不会超时,并且除非我杀死整个HttpListener,否则我似乎无法将其关闭。

简单地处理InputStream和OutputStream,并将上下文设置为/proc/net/tcp也不会关闭连接

null

有没有办法强制关闭此连接?

0 个答案:

没有答案