【发布时间】:2016-05-21 05:43:33
【问题描述】:
现在已经搜索了一个多小时,但我在文档和网络示例中都没有找到如何在使用 HttpListener 类时启用 SO_REUSEADDR 选项。
我的具体用例在 Powershell 脚本中,但即使 C# 中有答案,那也没问题。这是最简单的:
$Listener = New-Object System.Net.HttpListener
$Listener.Prefixes.Add('http://+:9999/')
Try
{
$Listener.Start()
# While loop here to handle requests; omitted for brevity
}
Catch
{
# omitted here for brevity
}
有时我 Ctrl-C 在测试时跳出脚本,并且以这种方式离开循环不允许调用 $Listener.Stop() 并正确关闭套接字。 (是的,我知道 - 如果它破坏了东西,请不要这样做)
通常,当我需要一个监听套接字时,我会使用SO_REUSEADDR 来处理那些事情没有正确清理的时间,以便让我重新启动我的监听器,而无需等待 30 分钟让端口可用再次。有没有办法用HttpListener 做到这一点而我只是想念它?
【问题讨论】:
-
肯定会这样做(很惊讶代码还没有,但我继承了它),但它仍然不能解决原来的问题。
-
我添加了一个答案
标签: c# .net sockets powershell