Uma implementação SSDP (Simple Service Discovery Protocol) para Squeak/Pharo Smalltalk. Para carregar:
Metacello new
baseline: ' SSDP ' ;
repository: ' github://rydier/SSDP/repository ' ;
load.
Embora o SSDP seja o protocolo de descoberta subjacente usado pelo uPnP, ele nunca foi totalmente padronizado. Esta implementação foi baseada em http://quimby.gnus.org/internet-drafts/draft-cai-ssdp-v1-02.txt , sem a funcionalidade de proxy, que foi descartada em uma versão de rascunho posterior. Então, em essência, a versão mais recente do rascunho é o que é implementado. A versão posterior contém seções muito expandidas sobre fundamentos de design, o que a torna uma leitura muito melhor para aqueles que desejam aprender do que se trata um protocolo de descoberta e as compensações envolvidas, mas com muito menos densidade de informações do ponto de vista de alguém que está implementando o protocolo.
Servidor SSDP:
| server |
server := SSDPServer v4SiteLocal.
server
offerServiceType: ' ssdp:testService '
atLocation: ' http:/test.local/ ' .
server shutDown.
Cliente SSDP:
| client |
client := SSDPClient v4SiteLocal.
client filter: ' ssdp:all '
whenAvailable: [ :resource |
resource printOn: Transcript .
' is available ' printOn: Transcript .
Transcript nextPut: Character cr. ]
whenUnavailable: [ :resource |
resource printOn: Transcript .
' is becoming unavailable ' printOn: Transcript .
Transcript nextPut: Character cr. ].
Documentação mais detalhada pode ser encontrada nos comentários da turma.
Se você ler o rascunho posterior e descobrir que algo não está de acordo, abra um problema ou envie uma solicitação pull.
Se você implementar uma maneira melhor de descobrir interfaces locais disponíveis (que é a pior parte do código) para iniciar os ouvintes SSDP, eu apreciaria especialmente ser notificado!
Migrado de http://smalltalkhub.com/#!/~henriksp/SSDP usando https://github.com/peteruhnak/git-migration