Eine SSDP-Implementierung (Simple Service Discovery Protocol) für Squeak/Pharo Smalltalk. Zum Laden:
Metacello new
baseline: ' SSDP ' ;
repository: ' github://rydier/SSDP/repository ' ;
load.
Obwohl SSDP das zugrunde liegende Erkennungsprotokoll von uPnP ist, wurde es nie wirklich vollständig standardisiert. Diese Implementierung basierte auf http://quimby.gnus.org/internet-drafts/draft-cai-ssdp-v1-02.txt, abzüglich der Proxy-Funktionalität, die in einer späteren Entwurfsversion weggelassen wurde. Im Wesentlichen wird also die neueste Version des Entwurfs umgesetzt. Die spätere Version enthält stark erweiterte Abschnitte zu Entwurfsprinzipien, was sie zu einer viel besseren Lektüre für diejenigen macht, die erfahren möchten, worum es bei einem Erkennungsprotokoll geht und welche Kompromisse damit verbunden sind, allerdings mit einer viel geringeren Informationsdichte aus der Sicht einer Person, die es umsetzt das Protokoll.
SSDP-Server:
| server |
server := SSDPServer v4SiteLocal.
server
offerServiceType: ' ssdp:testService '
atLocation: ' http:/test.local/ ' .
server shutDown.
SSDP-Client:
| 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. ].
Eine ausführlichere Dokumentation finden Sie in den Klassenkommentaren.
Wenn Sie den späteren Entwurf lesen und feststellen, dass etwas nicht übereinstimmt, öffnen Sie bitte ein Problem oder senden Sie eine Pull-Anfrage.
Wenn Sie eine bessere Methode zum Erkennen verfügbarer lokaler Schnittstellen implementieren (was der schlechteste Teil des Codes ist), um SSDP-Listener zu starten, würde ich mich besonders über eine Benachrichtigung freuen!
Migriert von http://smalltalkhub.com/#!/~henriksp/SSDP mit https://github.com/peteruhnak/git-migration