Como usar o zeroconf?

3

Eu o executo em uma linha de comando? Eu o executo como um aplicativo GUI? Acho que descobre recursos disponíveis através de uma rede local e atribui endereços aos recursos. O que acontece depois? Esta informação é gravada em algum arquivo que eu possa ler por outro aplicativo? Posso colocar endereços gerados pelo zeroconf na linha de endereço do meu navegador e acessar o servidor da web (sob a condição de que um servidor da web esteja em execução no recurso)?

    
por Roman 02.03.2010 / 11:15

1 resposta

7

Normalmente, cada máquina que oferece um serviço executará um daemon Zeroconf e os clientes procurarão por isso na rede. Nesta caixa Debian, por exemplo, existe um processo chamado avahi-daemon . Para anunciar um serviço, um programa fala com o daemon. Uma maneira fácil de fazer isso é com o programa avahi-publish , que registra um serviço com o daemon:

avahi-publish -s myservice _http._tcp  12345 "Here it is"

Até esse programa terminar, avahi-browse irá encontrá-lo:

$ avahi-browse -t _http._tcp
= eth0 IPv4 myservice                       Web Site             local
   hostname = [mymachine.local]
   address = [192.168.1.123]
   port = [12345]
   txt = ["Here it is"]

Na maioria das vezes você não vai querer rodar um programa separado apenas para publicar o serviço, então seu daemon terá um pouco de código para fazer isso. Aqui estão alguns bons exemplos de como fazer isso em Python. Há uma função simples que você chama assim:

# Downloaded from http://stackp.online.fr/?p=35
# Thanks to Pierre
#
from ZeroconfService import ZeroconfService
import time

service = ZeroconfService(name="Joe's awesome FTP server",
                          port=3000,  stype="_ftp._tcp")
service.publish()

Novamente, na maioria das vezes, você não precisa executar o avahi-browse, porque o navegador provavelmente pode encontrar essas coisas por si só. O Safari pode no Mac, por exemplo - procure o menu "Bonjour".

Você também pode encontrar máquinas usando o zeroconf. Minha máquina é endereçável usando o domínio .local :

ssh mymachine.local

funcionará mesmo que a máquina não esteja no DNS. Muito útil para uma rede doméstica!

    
por 02.03.2010 / 13:24