我正在寻找一种方法,让 LAN 中的客户端无需任何配置即可找到我的服务器应用程序的所有实例。我不想自己破解某些东西,而是想使用现有的解决方案。就个人而言,我需要用 Python 来完成它,但我很高兴听到任何其他语言的解决方案。
那么为什么我不使用avahi或OpenSLP或其他Zeroconf / SLP解决方案呢?好吧,还有一些额外的标准,我的印象是上述系统都不符合它们。
我正在寻找一个解决方案:
- 灵活。它必须不需要超级用户权限,即只使用端口>1024。
- 固体。它必须允许在一台机器上提供相同和不同服务类型的多个服务,并且即使在启动广告服务器的实例停止或崩溃时也能继续广告服务。
- 便携。它几乎必须在任何地方运行,或者至少在 *BSD、Debian/gentoo/RedHat/SuSe Linux、Mac OS X、Solaris 和 Windows NT 上运行。
- 光。理想情况下,一个 Python 脚本将是整个解决方案。我对地址自动配置或类似的东西一点也不感兴趣,尽管我不情愿地接受一个有很多我不需要的功能的解决方案。此外,任何一次性设置都是严格禁止的。
我期待这样的事情:
def registerService(service): # (type, port)
if listen(multicast, someport):
if fork() == child:
services = [service]
for q in queriesToMe():
if q == DISCOVERY:
answer(filter(q.criteria, services))
elif q == ADVERTISE and q.sender == "localhost":
services.append(q.service)
else:
advertiseAt("localhost", service)