如何找到未使用的端口?

时间:2010-08-06 16:55:49

标签: .net port-number

我需要创建一个脑死亡的HTTP服务器,为localhost上的所有内容返回404。具体来说,我有一个验收测试工具下的程序,它调用服务器,但是为了测试我想通过跳过那个无关的检查来节省时间。

我有办法传入程序用作测试工具一部分的URL,测试工具(当前)只是在端口80上创建这样的服务器。

但是,如果多个测试尝试同时运行,则会出现问题,因为每个测试工具都尝试在端口80上创建一个HTTP服务器,该服务器对其中一个线束失败。

因此,我想在尝试创建HTTP服务器之前随机化端口并确保它可用。如何检查该端口是否正在使用?

4 个答案:

答案 0 :(得分:11)

将套接字绑定到端口0,系统将选择一个可用的端口,介于1024和5000之间我相信

稍后您可以了解具有Socket.LocalEndPoint属性的已分配端口。

答案 1 :(得分:1)

我认为答案很明显:如果套接字监听失败,则无法使用:选择另一个。听听例外情况。

答案 2 :(得分:0)

为什么不完全嘲笑请求,以便您根本不需要服务器或网络连接?

这将使一个不那么脆弱的测试。

好的,在任何情况下,您是否可以在某个预定义的范围内生成随机端口,并尝试在其上设置服务器?如果它已被占用,则应抛出异常。

答案 3 :(得分:-1)

Socket.Select()

IIRC