我需要在同一进程中运行多个此HTTP服务器实例。每个实例都有一个默认端口,但如果该端口不可用,则应使用下一个可用端口。这就是我的问题所在;我可能会得到两个正在侦听同一端口的HTTP服务器。
我无法更改HTTP服务器的代码,并且HTTP服务器在无法侦听我提供的端口时不会通知我,因此我必须能够在启动每个HTTP服务器之前检查端口是否已被使用。我尝试通过将自己的套接字绑定到SO_REUSEADDR设置为FALSE和SO_EXCLUSIVEADDRUSE设置为TRUE来检查某个端口是否已被监听,但是当现有的HTTP服务器已在该端口上侦听时,bind和listen调用都会成功。
这个HTTP服务器是如何实现这种效果的,我如何准确地检查是否以这种方式侦听某个端口?