我需要创建一个脑死亡的HTTP服务器,为localhost上的所有内容返回404。具体来说,我有一个验收测试工具下的程序,它调用服务器,但是为了测试我想通过跳过那个无关的检查来节省时间。
我有办法传入程序用作测试工具一部分的URL,测试工具(当前)只是在端口80上创建这样的服务器。
但是,如果多个测试尝试同时运行,则会出现问题,因为每个测试工具都尝试在端口80上创建一个HTTP服务器,该服务器对其中一个线束失败。
因此,我想在尝试创建HTTP服务器之前随机化端口并确保它可用。如何检查该端口是否正在使用?
答案 0 :(得分:11)
将套接字绑定到端口0,系统将选择一个可用的端口,介于1024和5000之间我相信
稍后您可以了解具有Socket.LocalEndPoint
属性的已分配端口。
答案 1 :(得分:1)
我认为答案很明显:如果套接字监听失败,则无法使用:选择另一个。听听例外情况。
答案 2 :(得分:0)
为什么不完全嘲笑请求,以便您根本不需要服务器或网络连接?
这将使一个不那么脆弱的测试。
好的,在任何情况下,您是否可以在某个预定义的范围内生成随机端口,并尝试在其上设置服务器?如果它已被占用,则应抛出异常。
答案 3 :(得分:-1)
Socket.Select()
IIRC