Dopo aver rilasciato l’ultima versione della μPLibrary, posto il seguente articolo per chiarire l’utilizzo del nuovo componente Dynamic DNS client che ho aggiunto.
In primo luogo, è necessario istanziare un oggetto della classe DdnsAccount attraverso la quale è possibile settare il nome dell’host per il quale vogliamo eseguire la sincronizzazione con l’indirizzo IP corrente, oltre a specificare lo username e la password del nostro account presso il DNS service provider.
DdnsAccount ddnsAccount = new DdnsAccount {
Hostname = "hostname",
Username = "username",
Password = "password" };
Dopo aver definito le informazioni che riguardano l’account, è necessario istanziare un oggetto della classe DdnsConfig attraverso il quale settiamo la configurazione del Ddns client, ossia l’account precedente, il periodo di aggiornamento dell’indirizzo IP (in millisecondi) e la possibilità di utilizzare o meno una connessione protetta su SSL.
DdnsConfig ddnsConfig = new DdnsConfig {
Account = ddnsAccount,
Period = 300000,
SSL = true };
A questo punto, completate tutte le impostazioni di configurazione, è necessario istanziare il client vero e priorio. A tale scopo andiamo ad utilizzare la classe statica DdnsClientFactory(che implementa il pattern Factory Method) ed il relativo metodo GetDdnsClient(). Quest’ultimo riceve in ingresso i due seguenti parametri :
-
DdnsServiceProvider : uno dei possibili valori di tale enumerativo che rappresenta il Dynamic DNS service provider che stiamo utilizzando (es. DynDNS, No-IP, …);
-
DdnsConfig : l’oggetto che contiene tutte le impostazioni di configurazione del client;
Il metodo in questione ritorna un’istanza di una delle possibili classi derivate dalla classeDdnsClient, che dipenderà dal service provider scelto. Scegliendo, ad esempio, No-IP come service provider, la classe istanziata sarà del tipo DdnsNoIpClient (che appunto deriva da DdnsClient e ne implementa i metodi necessari).
DdnsClient ddnsClient = DdnsClientFactory.GetDdnsClient(
DdnsServiceProvider.NoIp,
ddnsConfig);
Il passo successivo è quello di registrare un event handler all’evento IpAddressUpdated della classe DdnsClient che verrà sollevato nel momento in cui il client avrà eseguito un aggiornamento dell’indirizzo IP presso il service provider.
ddnsClient.IpAddressUpdated +=
new IpAddressUpdatedHandler(ddnsClient_IpAddressUpdated);
L’event handler riceverà un event args del tipo IpAddressUpdatedEventArgs che fornisce le due seguenti informazioni :
- IpAddress : l’indirizzo IP aggiornato;
- Response : un’istanza della classe DdnsResponse che contiene il codice e quindi l’esito dell’aggiornamento ritornato dal server;
L’ultima operazione che ci rimane è quella di avviare il client, utilizzando il metodo Start()della classe DdnsClient (è previsto anche il corrispondente metodo Stop() per terminare l’azione del client). Al suo interno, quest’ultimo non fa altro che avviare un timer che sulla base del periodo settato in fase di configurazione, esegue il check e l’update dell’indirizzo IP. Ovviamente, tutte le operazioni vengono eseguite in un thread separato dal main thread dell’applicazione che può così proseguire in altre azioni ed elaborazioni.