Primeiro, o que exatamente Bonjour faz (por favor, leia minhas suposições escritas abaixo)?
Aqui descobri que o Bonjour permite a descoberta automática de computadores, dispositivos e serviços em redes IP. Mas pensei que não apenas "descobre dispositivos na rede IP", como também cria uma rede IP atribuindo endereços IP a dispositivos nos quais o Bonjour está sendo executado. Estou certo?E ainda sinto falta da essência. Funciona da seguinte maneira? Primeiro, conecto dispositivos (por exemplo, laptops) fisicamente para que eles possam se comunicar. Então, digamos, em alguns laptops, tenho o Bonjour em execução e, como conseqüência, esses laptops atribuem endereços IP a eles mesmos de maneira automática. Assim, os laptops (onde Bonjour está sendo executado) constroem uma rede IP. Funciona dessa maneira?
Ou pode ser que um computador executando o Bonjour não seja considerado um serviço e não seja transmitido apenas porque o Bonjour está sendo executado neste computador. Quero dizer que os aplicativos executados nos computadores precisam usar o Bonjour para se transmitir. Portanto, são os aplicativos que se transmitem (não os computadores) e isso não é feito automaticamente (o aplicativo precisa se transmitir explicitamente). Está certo?
Como exatamente meu aplicativo pode se transmitir? Posso usar a linha de comando para registrar um serviço (para que todos os aplicativos que usam Bonjour saibam que um novo serviço apareceu)?
Além disso, eu gostaria de ter um aplicativo que use a rede IP criada por Bonjour. Para isso, meu aplicativo precisa saber quais dispositivos / serviços estão presentes na rede. Em mais detalhes, meu aplicativo precisa ter uma lista de serviços. Cada serviço na lista deve ter um nome, o endereço IP em que está sendo executado e a porta usada pelo aplicativo. Bonjour pode fornecer essas informações de alguma forma? Se for o caso, como exatamente funciona. Como meu programa pode obter essas informações do Bonjour? Meu programa pode ler algum arquivo criado por Bonjour e contendo as informações acima mencionadas? Posso usar alguns comandos na linha de comando para recuperar essas informações?
Tenho um interesse especial em acessar as informações sobre serviços de arquivos, variáveis de ambiente ou comandos na linha de comando. Essas opções me parecem as mais simples! Como nesse caso, não preciso usar nenhuma biblioteca adicional para me comunicar com Bonjour a partir de uma linguagem de programação específica.
Por favor, faça perguntas se algo não estiver claro na minha pergunta. Vou tentar formular minha pergunta de uma maneira mais clara.
PPS Eu uso o Windows 7 .
ADICIONADO: pretendo escrever meus aplicativos em PHP. Todo computador deve executar um servidor web Apache. E quero usar o Bonjour para ajudar o computador a se descobrir (os computadores estão trabalhando em uma rede local).
fonte
Não é bem assim; como Jon apontou, o DHCP (geralmente) é usado para alocar endereços IP. Da mesma maneira que o DNS comum converte nomes de domínio em endereços IP, o Bonjour é usado para converter nomes de domínio temporários (dentro da rede local) nos endereços IP que os fornecem.
Não; é provável que os laptops obtenham seus endereços IP de um servidor DHCP local. Bonjour apenas os ajuda a descobrir quais serviços cada um pode oferecer aos outros.
Sim - geralmente, seu aplicativo precisará anunciar sua existência explicitamente. Isso geralmente pode ser feito usando bibliotecas fornecidas pelo sistema (comuns no OS X) ou bibliotecas personalizadas (por exemplo, Net :: Bonjour do perl).
Não conheço uma ferramenta de linha de comando que faça isso, mas muitas linguagens de programação importantes têm bibliotecas disponíveis para fazer isso.
A maioria das bibliotecas Bonjour deve ser capaz de fazer isso por você; veja o primeiro exemplo em http://search.cpan.org/~chlige/Net-Bonjour-0.96/lib/Net/Bonjour.pm
Usando as bibliotecas apropriadas, o programa usa o protocolo Bonjour para solicitar a todos os outros computadores da rede local que informem quais serviços eles têm disponíveis. Essa biblioteca analisará as respostas e as apresentará em um formato mais útil.
Não conheço uma ferramenta que faça isso, mas ela pode existir.
Mais algumas informações sobre o que o programa que você está escrevendo fará e em que idioma você está escrevendo, facilitaria a ajuda.
Para mais informações introdutórias, tente os dois:
fonte
Bonjour não atribui endereços IP - é um protocolo de descoberta - você ainda precisa de endereços IP DHCP / estático / local de link (APIPA) para que ele funcione.
Ele usa o DNS multicast (mDNS) para descobrir quais hosts estão no mesmo domínio de broadcast e se torna essencialmente seu próprio servidor DNS.
Veja Bonjour & Zeroconf para ver detalhes.
A menos que seu aplicativo seja para uma rede doméstica / não gerenciada, ou seja, na falta de um servidor DNS local, você simplesmente não precisa dele.
fonte