Я ищу способ, которым клиенты в локальной сети могут найти все экземпляры моего серверного приложения без какой-либо конфигурации. Вместо того, чтобы что-то взломать, я бы хотел использовать существующее решение. Лично мне нужно, чтобы это было сделано на Python, но я был бы рад услышать о решениях на любом другом языке.Flexible, Solid и Portable Service Discovery
Почему я не пользуюсь avahi или OpenSLP или каким-либо другим решением? Zeroconf/SLP? Ну, есть еще несколько дополнительных критериев, и я чувствую, что ни одна из вышеупомянутых систем не соответствует им.
Я ищу решение, которое:
- Гибкая. Он не должен требовать прав суперпользователя, т. Е. Использовать только порты> 1024.
- Solid. Он должен разрешать нескольким службам одного и того же типа обслуживания на одном компьютере и продолжать рекламировать сервисы, даже если экземпляр, который запустил сервер рекламы, останавливается или падает.
- Портативный. Он должен работать почти везде или, по крайней мере, на * BSD, Debian/gentoo/RedHat/SuSe Linux, Mac OS X, Solaris и Windows NT.
- Light. В идеале один скрипт 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)
Pyro выглядит великолепно, но не в состоянии удовлетворить некоторые требования, я скользил в «Solid»: Он использует центральный сервер для хранения рекламы, так что вся сеть кили над как только отделить центральную подсеть сервера. Кроме того, он невероятно мощный и, следовательно, не совсем свет. И трансляция уродливая. – phihag
(Я подозреваю, что настоящая проблема - я слишком требовательна) – phihag