Di heartbeat ce ne sono a iosa; da semplici script che pingano a soluzioni complesse. Cerca prima di sviluppare l'ennesima tecnologia apposita... anche perche' stai facendo un sistema di monitoraggio, e come tale ha bisogno di essere affidabile; se te lo fai da solo rischi di affidarti ad una cosa che per essere affidabile deve prima fallire qualche volta per trovare i bug... a meno che non applichi i modelli di sviluppo piu' rigidi, con i tempi che questi comportano...<br>
<br>Una via di mezzo potrebbe essere quella di impiegare un qualsiasi socket server multithreaded generico gia' sviluppato - ie: esente da bachi - a cui devi aggiungere solo quella pochissima logica che verifica l'arrivo di un pacchetto ogni x secondi da y IP.<br>
<br>ciao<br><br>Michele<br><br><br><br><div class="gmail_quote">Il giorno 22 luglio 2010 14.37, Filippo Sallemi <span dir="ltr"><<a href="mailto:tonyputi@gmail.com">tonyputi@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Vi ringrazio per il supporto ragazzi, ed è tutto molto interessante.<br>Il motivo per cui sto scrivendo questo piccolissimo software è perchè vorrei avere un heartbeat dei nodi da mandare ad un server, per il solo scopo di tenere sotto controllo lo stato dei nodi in tempo più reale possibile ma senza compromettere la banda.<br>

<br>In verità penso che sia solo sufficiente mandare un beat al server e non ricvere nulla nel caso specifico, ovviamente però potrei sbaglairmi o non tenere conto di qualcosa che magari mi sfugge.<br><br>So programmare in concorrenza, ma purtroppo la mia poca esperienza di concorrenza viene da mondo java universitario.<br>

<br>Se pensate che quello che sto facendo sia inutile o interesante vi prego di farmelo sapere non voglio reinventare l'acqua calda.<br><br>Ciao e grazie ancora<br><br><div class="gmail_quote">Il giorno 22 luglio 2010 11.54,  <span dir="ltr"><<a href="mailto:clauz@ninux.org" target="_blank">clauz@ninux.org</a>></span> ha scritto:<div>
<div></div><div class="h5"><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">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>
<div><div></div><div><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 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 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 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 potrei<br>
>> ovviare al problema eliminando la parte di codice dove aspetto 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>
</div></div></blockquote></div></div></div><br><br clear="all"><br>-- <br><font color="#888888">Filippo Sallemi<br>
</font><br>_______________________________________________<br>
Wireless mailing list<br>
<a href="mailto:Wireless@ml.ninux.org">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></blockquote></div><br>