我相信有更好的方式来描述我所面临的挑战,但希望这已经足够清楚了。
我有一个服务器在局域网内随机主机+端口上运行,我想知道主机名和端口,或者至少是随机端口,以便我的(web)客户端可以连接到正确的URL。
这个特定的服务器碰巧运行并响应M-SEARCH (SSDP)查询,但我不认为你可以从网页/javascript查询。
我不介意使用公共(云)服务器来帮助完成这个过程。
编辑:仔细想想,我不知道我在想什么UPNP等,我的"客户端"只有一个浏览器和一个url要提供,所以在他点击我的服务器端口之前,我甚至不能运行javascript。也许解决方案必须在云上使用某种众所周知的地址或在主机上使用众所周知的端口。
您可以使用netstat命令查找服务器(windows或linux)上的开放端口
在Linux上查找Java应用服务器的示例:netstat -anp | grep java
输出-它正在监听端口8080:
tcp 0 0 10.121.235.200:8080 0.0.0.0:* LISTEN 7051/java
作为一个旁注,你可能会发现这很有用,如果你有一个想法,它应该是一个特定的端口,你可以检查是否有一个进程正在运行,通过使用lsof:
lsof -i :portNumber
的例子:
lsof -i :80