3

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

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

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

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

4

4 回答 4

11

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

您稍后可以使用该Socket.LocalEndPoint属性了解分配的端口。

于 2010-08-06T17:01:44.743 回答
1

我以为答案很明显:如果套接字侦听失败,则它不可用:选择另一个。只听例外。

于 2010-08-06T17:00:54.683 回答
0

为什么不完全模拟请求,这样您实际上根本不需要服务器或网络连接?

这将使测试变得不那么脆弱。

好吧,无论如何,你能不能只在某个预定义的范围内生成一个随机端口,然后尝试在上面设置一个服务器?如果它已经被占用,应该抛出一个异常。

于 2010-08-06T16:58:32.890 回答
-1
Socket.Select()

IIRC

于 2010-08-06T17:01:38.893 回答