Per completezza, quello che dice Antonio è giusto, ma è utilie nella situazione immediatamente successiva, ovvero inviare l'intero stato (o altre info) del nodo ad un entità centrale, per cui è necessario essere certi che arrivi e magari ricevere una risposta (robin update).<br>
In generale io vedo come unica informazione del beat, il nodo che lo sta mandando e nient'altro.<br><br>ovviamente la parte server collezionerà una serie di pacchetti "beat" in base ai quali saprà se il nodo c'è oppure no.<br>
<br>Magari mi sbaglio ma a me pare cristallino.<br><br>Ciao<br><br><div class="gmail_quote">Il giorno 22 luglio 2010 16.47, Filippo Sallemi <span dir="ltr"><<a href="mailto:tonyputi@gmail.com">tonyputi@gmail.com</a>></span> ha scritto:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Sono daccordissimo con te Michele, non ho proprio voglia di reinventare l'acqua 
calda anche se in verità il programmino con il suo ciclo di vita 
dovrebbe essere abbastanza facile da implementare e con pochi rischi di fallimento.<br>
<br>
In verità avrei voluto usare snmp per questo genere di cose ma non so se in realtà è la scelta giusta.<br><br>La scelta di UDP dipende da due fattori:<br><ol><li>Usare minor banda possibile;</li><li>Non mi interessa se perdo qualche pacchetto, mi interessa solo dire "hei ci sono" ogni tot secondi, dove tot è un numero veramente basso.</li>

</ol>Il software è pensato per una serie di applicazioni lato server e sicuramente non è sufficiente per fare monitoring dei nodi, ma rappresenta un inizio...<br><br>Filippo<br><br><br><div class="gmail_quote">Il giorno 22 luglio 2010 16.42, Antonio Anselmi <span dir="ltr"><<a href="mailto:tony.anselmi@gmail.com" target="_blank">tony.anselmi@gmail.com</a>></span> ha scritto:<div>
<div></div><div class="h5"><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">perche' non usare TCP? con UDP "spari e speri" che il beat arrivi a<br>
destinazione, senza alcuna info sullo stato della connesiione<br>
<br>
Antonio<br>
<br>
Il 22 luglio 2010 14.45, Michele Favara Pedarsi <<a href="mailto:mfp@meganetwork.org" target="_blank">mfp@meganetwork.org</a>><br>
ha scritto:<br>
<div><div></div><div>> Di heartbeat ce ne sono a iosa; da semplici script che pingano a soluzioni<br>
> complesse. Cerca prima di sviluppare l'ennesima tecnologia apposita... anche<br>
> perche' stai facendo un sistema di monitoraggio, e come tale ha bisogno di<br>
> essere affidabile; se te lo fai da solo rischi di affidarti ad una cosa che<br>
> per essere affidabile deve prima fallire qualche volta per trovare i bug...<br>
> a meno che non applichi i modelli di sviluppo piu' rigidi, con i tempi che<br>
> questi comportano...<br>
><br>
> Una via di mezzo potrebbe essere quella di impiegare un qualsiasi socket<br>
> server multithreaded generico gia' sviluppato - ie: esente da bachi - a cui<br>
> devi aggiungere solo quella pochissima logica che verifica l'arrivo di un<br>
> pacchetto ogni x secondi da y IP.<br>
><br>
> ciao<br>
><br>
> Michele<br>
><br>
><br>
><br>
> Il giorno 22 luglio 2010 14.37, Filippo Sallemi <<a href="mailto:tonyputi@gmail.com" target="_blank">tonyputi@gmail.com</a>> ha<br>
> scritto:<br>
>><br>
>> Vi ringrazio per il supporto ragazzi, ed è tutto molto interessante.<br>
>> Il motivo per cui sto scrivendo questo piccolissimo software è perchè<br>
>> vorrei avere un heartbeat dei nodi da mandare ad un server, per il solo<br>
>> scopo di tenere sotto controllo lo stato dei nodi in tempo più reale<br>
>> possibile ma senza compromettere la banda.<br>
>><br>
>> In verità penso che sia solo sufficiente mandare un beat al server e non<br>
>> ricvere nulla nel caso specifico, ovviamente però potrei sbaglairmi o non<br>
>> tenere conto di qualcosa che magari mi sfugge.<br>
>><br>
>> So programmare in concorrenza, ma purtroppo la mia poca esperienza di<br>
>> concorrenza viene da mondo java universitario.<br>
>><br>
>> Se pensate che quello che sto facendo sia inutile o interesante vi prego<br>
>> di farmelo sapere non voglio reinventare l'acqua calda.<br>
>><br>
>> Ciao e grazie ancora<br>
>><br>
>> Il giorno 22 luglio 2010 11.54, <<a href="mailto:clauz@ninux.org" target="_blank">clauz@ninux.org</a>> ha scritto:<br>
>>><br>
>>> Ciao.<br>
>>> La rcvfrom e' una chiamata bloccante, quindi o usi la sottocitata select<br>
>>> o entri nel fantastico mondo dei thread e della programmazione<br>
>>> concorrente...<br>
>>><br>
>>> Clauz<br>
>>><br>
>>><br>
>>><br>
>>> On 07/22/2010 01:54 AM, ZioPRoTo (Saverio Proto) wrote:<br>
>>> > Consiglio questa lettura:<br>
>>> > <a href="http://beej.us/guide/bgnet/output/html/multipage/index.html" target="_blank">http://beej.us/guide/bgnet/output/html/multipage/index.html</a><br>
>>> ><br>
>>> > nello specifico:<br>
>>> > <a href="http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select" target="_blank">http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select</a><br>
>>> ><br>
>>> > Saverio<br>
>>> ><br>
>>> ><br>
>>> > Il 21 luglio 2010 19.05, Filippo Sallemi <<a href="mailto:tonyputi@gmail.com" target="_blank">tonyputi@gmail.com</a>> ha<br>
>>> > scritto:<br>
>>> >> Ciao ragazzi,<br>
>>> >> sto giocherellando un po con C e stavo provando a scrivere un piccolo<br>
>>> >> programma che manda pacchetti UDP ad un host solo che ho notato che la<br>
>>> >> funzione rcvfrom resta bloccata finchè il server non manda una<br>
>>> >> risposta<br>
>>> >> anche vuota.<br>
>>> >><br>
>>> >> Parte del codice esegue questo:<br>
>>> >><br>
>>> >> read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)&addr,<br>
>>> >> sizeof(addr));<br>
>>> >>         if (read < 0) {<br>
>>> >>             perror("Request error");<br>
>>> >>             return -1;<br>
>>> >>         }<br>
>>> >><br>
>>> >>         read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL);<br>
>>> >>         if (read < 0) {<br>
>>> >>             perror("Read error");<br>
>>> >>             return -1;<br>
>>> >>         }<br>
>>> >><br>
>>> >>         /**<br>
>>> >>          * Print results<br>
>>> >>          **/<br>
>>> >>         if (read > 0) {<br>
>>> >>             buffer[read]=0;<br>
>>> >>             if (fputs(buffer, stdout) == EOF) {<br>
>>> >>                 perror("fputs error");<br>
>>> >>                 return -1;<br>
>>> >>             }<br>
>>> >>         }<br>
>>> >><br>
>>> >> Ho provato a usare le fnctl per impostare la socket in modo non<br>
>>> >> bloccante ma<br>
>>> >> ottengo solo l'uscita dal programma e nessun invio di pacchetti.<br>
>>> >><br>
>>> >> Adesso non è che mi importi tanto avere una risposta dal server e<br>
>>> >> potrei<br>
>>> >> ovviare al problema eliminando la parte di codice dove aspetto<br>
>>> >> risposta, ma<br>
>>> >> la mia curiosità dal punto di vista didattico rimane.<br>
>>> >> Qualcuno saprebbe illuminarmi in qualche modo?<br>
>>> >><br>
>>> >> Grazie<br>
>>> >><br>
>>> >> Ciao<br>
>>> >><br>
>>> >> --<br>
>>> >> Filippo Sallemi<br>
>>> >><br>
>>> >> _______________________________________________<br>
>>> >> Wireless mailing list<br>
>>> >> <a href="mailto:Wireless@ml.ninux.org" target="_blank">Wireless@ml.ninux.org</a><br>
>>> >> <a href="http://ml.ninux.org/mailman/listinfo/wireless" target="_blank">http://ml.ninux.org/mailman/listinfo/wireless</a><br>
>>> >><br>
>>> >><br>
>>> > _______________________________________________<br>
>>> > Wireless mailing list<br>
>>> > <a href="mailto:Wireless@ml.ninux.org" target="_blank">Wireless@ml.ninux.org</a><br>
>>> > <a href="http://ml.ninux.org/mailman/listinfo/wireless" target="_blank">http://ml.ninux.org/mailman/listinfo/wireless</a><br>
>>><br>
>>> _______________________________________________<br>
>>> Wireless mailing list<br>
>>> <a href="mailto:Wireless@ml.ninux.org" target="_blank">Wireless@ml.ninux.org</a><br>
>>> <a href="http://ml.ninux.org/mailman/listinfo/wireless" target="_blank">http://ml.ninux.org/mailman/listinfo/wireless</a><br>
>><br>
>><br>
>><br>
>> --<br>
>> Filippo Sallemi<br>
>><br>
>> _______________________________________________<br>
>> Wireless mailing list<br>
>> <a href="mailto:Wireless@ml.ninux.org" target="_blank">Wireless@ml.ninux.org</a><br>
>> <a href="http://ml.ninux.org/mailman/listinfo/wireless" target="_blank">http://ml.ninux.org/mailman/listinfo/wireless</a><br>
>><br>
><br>
><br>
> _______________________________________________<br>
> Wireless mailing list<br>
> <a href="mailto:Wireless@ml.ninux.org" target="_blank">Wireless@ml.ninux.org</a><br>
> <a href="http://ml.ninux.org/mailman/listinfo/wireless" target="_blank">http://ml.ninux.org/mailman/listinfo/wireless</a><br>
><br>
><br>
_______________________________________________<br>
Wireless mailing list<br>
<a href="mailto:Wireless@ml.ninux.org" target="_blank">Wireless@ml.ninux.org</a><br>
<a href="http://ml.ninux.org/mailman/listinfo/wireless" target="_blank">http://ml.ninux.org/mailman/listinfo/wireless</a><br>
</div></div></blockquote></div></div></div><br><br clear="all"><br>-- <br><font color="#888888">Filippo Sallemi<br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Filippo Sallemi<br>