我正在尋找一種方式讓局域網中的客戶端找到我的服務器應用程序的所有實例,而無需進行任何配置。我不想自己剽竊某些東西,而想使用現有的解決方案。就我個人而言,我需要用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)
煙火看起來不錯,但不能滿足一些要求我滑向「實」:它使用中央服務器來存儲的廣告,使整個網絡龍骨,只要我分開中央服務器子網中的。另外,這是令人難以置信的強大,因此不完全光。而且播出很難看。 – phihag 2009-02-20 15:03:05