Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
La grafica non è delle migliori e purtroppo è stato realizzato in tempi record. http://www.internetfree4u.org Ciao Il giorno 26 luglio 2010 08.43, ZioPRoTo (Saverio Proto) ziopr...@gmail.com ha scritto: Con questo voglio dire che i nodi non sono in lan con il server, quindi è possibile utilizzare snmp su questo scenario senza installare VPN? Se si avreste qualche doc che spieghi come configurare nodi e server? Basta che ci sia connettività IP tra il server ed i nodi da monitorare. P.S. La rete al mare sta riuscuotendo un notevole succcesso, dunque per ringraziare la comunità del supporto sarei ben felice di mettere un link a ninux sul sito dell'associazione. Non credo ci siano problemi, poi mandaci il link del sito dell'associazione così ce lo guardiamo ! Saverio ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
La grafica non è delle migliori e purtroppo è stato realizzato in tempi record. http://www.internetfree4u.org ma dove sta il link a Ninux ? Saverio ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
Comunque adesso il link è messo in tutte le pagine sul powered by in quanto senza la comunità ninux di certo non saremmo riusciti a tirare su questa cosa. Ciao Il giorno 26 luglio 2010 11.11, Filippo Sallemi tonyp...@gmail.com ha scritto: prima di metterlo ho chiesto se potevo metterlo... Il giorno 26 luglio 2010 11.09, ZioPRoTo (Saverio Proto) ziopr...@gmail.com ha scritto: La grafica non è delle migliori e purtroppo è stato realizzato in tempi record. http://www.internetfree4u.org ma dove sta il link a Ninux ? Saverio ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless -- Filippo Sallemi -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
sono indeciso tra snmp-static e snmp-utils snmp-static è il pacchetto server compilato staticamente che non ha bisogno di snmp-libs snmp-utils sono le utility client per interrogare i servers snmp, queste di solito sull'AP non ti servono Saverio ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
Ok, ma se i miei nodi con snmp-static sono dietro nat come fanno ad essere interrogati? Non dovrebbero essere i nodi a mandare il loro stato alla macchina con snmp-utils? Scusate per le domande idiote ma ho qualche problema a capire questa cosa. Ciao Il giorno 26 luglio 2010 12.15, ZioPRoTo (Saverio Proto) ziopr...@gmail.com ha scritto: Ok, quindi se non ho capito male su ogni nodo metto snmp-static e snmp-utils deve essere installato sulla macchina che interroga i nodi giusto? si Saverio ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
Ok, ma se i miei nodi con snmp-static sono dietro nat come fanno ad essere interrogati? Non dovrebbero essere i nodi a mandare il loro stato alla macchina con snmp-utils? Scusate per le domande idiote ma ho qualche problema a capire questa cosa. allora funziona così: tutti i nodi hanno un server snmp che da informazioni su quello che succede su quel nodo. c'è un server che ha un poller, ovvero un client che periodicamente contatta tutti i nodi devi avere connettività IP in modo che il poller possa raggiungere i nodi da monitorare. guarda la documentazione di cacti, ci sono più dettagli per capire Saverio ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
Ciao. La rcvfrom e' una chiamata bloccante, quindi o usi la sottocitata select o entri nel fantastico mondo dei thread e della programmazione concorrente... Clauz On 07/22/2010 01:54 AM, ZioPRoTo (Saverio Proto) wrote: Consiglio questa lettura: http://beej.us/guide/bgnet/output/html/multipage/index.html nello specifico: http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select Saverio Il 21 luglio 2010 19.05, Filippo Sallemi tonyp...@gmail.com ha scritto: Ciao ragazzi, sto giocherellando un po con C e stavo provando a scrivere un piccolo programma che manda pacchetti UDP ad un host solo che ho notato che la funzione rcvfrom resta bloccata finchè il server non manda una risposta anche vuota. Parte del codice esegue questo: read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)addr, sizeof(addr)); if (read 0) { perror(Request error); return -1; } read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL); if (read 0) { perror(Read error); return -1; } /** * Print results **/ if (read 0) { buffer[read]=0; if (fputs(buffer, stdout) == EOF) { perror(fputs error); return -1; } } Ho provato a usare le fnctl per impostare la socket in modo non bloccante ma ottengo solo l'uscita dal programma e nessun invio di pacchetti. Adesso non è che mi importi tanto avere una risposta dal server e potrei ovviare al problema eliminando la parte di codice dove aspetto risposta, ma la mia curiosità dal punto di vista didattico rimane. Qualcuno saprebbe illuminarmi in qualche modo? Grazie Ciao -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
Vi ringrazio per il supporto ragazzi, ed è tutto molto interessante. 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. 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. So programmare in concorrenza, ma purtroppo la mia poca esperienza di concorrenza viene da mondo java universitario. Se pensate che quello che sto facendo sia inutile o interesante vi prego di farmelo sapere non voglio reinventare l'acqua calda. Ciao e grazie ancora Il giorno 22 luglio 2010 11.54, cl...@ninux.org ha scritto: Ciao. La rcvfrom e' una chiamata bloccante, quindi o usi la sottocitata select o entri nel fantastico mondo dei thread e della programmazione concorrente... Clauz On 07/22/2010 01:54 AM, ZioPRoTo (Saverio Proto) wrote: Consiglio questa lettura: http://beej.us/guide/bgnet/output/html/multipage/index.html nello specifico: http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select Saverio Il 21 luglio 2010 19.05, Filippo Sallemi tonyp...@gmail.com ha scritto: Ciao ragazzi, sto giocherellando un po con C e stavo provando a scrivere un piccolo programma che manda pacchetti UDP ad un host solo che ho notato che la funzione rcvfrom resta bloccata finchè il server non manda una risposta anche vuota. Parte del codice esegue questo: read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)addr, sizeof(addr)); if (read 0) { perror(Request error); return -1; } read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL); if (read 0) { perror(Read error); return -1; } /** * Print results **/ if (read 0) { buffer[read]=0; if (fputs(buffer, stdout) == EOF) { perror(fputs error); return -1; } } Ho provato a usare le fnctl per impostare la socket in modo non bloccante ma ottengo solo l'uscita dal programma e nessun invio di pacchetti. Adesso non è che mi importi tanto avere una risposta dal server e potrei ovviare al problema eliminando la parte di codice dove aspetto risposta, ma la mia curiosità dal punto di vista didattico rimane. Qualcuno saprebbe illuminarmi in qualche modo? Grazie Ciao -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
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... 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. ciao Michele Il giorno 22 luglio 2010 14.37, Filippo Sallemi tonyp...@gmail.com ha scritto: Vi ringrazio per il supporto ragazzi, ed è tutto molto interessante. 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. 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. So programmare in concorrenza, ma purtroppo la mia poca esperienza di concorrenza viene da mondo java universitario. Se pensate che quello che sto facendo sia inutile o interesante vi prego di farmelo sapere non voglio reinventare l'acqua calda. Ciao e grazie ancora Il giorno 22 luglio 2010 11.54, cl...@ninux.org ha scritto: Ciao. La rcvfrom e' una chiamata bloccante, quindi o usi la sottocitata select o entri nel fantastico mondo dei thread e della programmazione concorrente... Clauz On 07/22/2010 01:54 AM, ZioPRoTo (Saverio Proto) wrote: Consiglio questa lettura: http://beej.us/guide/bgnet/output/html/multipage/index.html nello specifico: http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select Saverio Il 21 luglio 2010 19.05, Filippo Sallemi tonyp...@gmail.com ha scritto: Ciao ragazzi, sto giocherellando un po con C e stavo provando a scrivere un piccolo programma che manda pacchetti UDP ad un host solo che ho notato che la funzione rcvfrom resta bloccata finchè il server non manda una risposta anche vuota. Parte del codice esegue questo: read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)addr, sizeof(addr)); if (read 0) { perror(Request error); return -1; } read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL); if (read 0) { perror(Read error); return -1; } /** * Print results **/ if (read 0) { buffer[read]=0; if (fputs(buffer, stdout) == EOF) { perror(fputs error); return -1; } } Ho provato a usare le fnctl per impostare la socket in modo non bloccante ma ottengo solo l'uscita dal programma e nessun invio di pacchetti. Adesso non è che mi importi tanto avere una risposta dal server e potrei ovviare al problema eliminando la parte di codice dove aspetto risposta, ma la mia curiosità dal punto di vista didattico rimane. Qualcuno saprebbe illuminarmi in qualche modo? Grazie Ciao -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
perche' non usare TCP? con UDP spari e speri che il beat arrivi a destinazione, senza alcuna info sullo stato della connesiione Antonio Il 22 luglio 2010 14.45, Michele Favara Pedarsi m...@meganetwork.org ha scritto: 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... 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. ciao Michele Il giorno 22 luglio 2010 14.37, Filippo Sallemi tonyp...@gmail.com ha scritto: Vi ringrazio per il supporto ragazzi, ed è tutto molto interessante. 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. 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. So programmare in concorrenza, ma purtroppo la mia poca esperienza di concorrenza viene da mondo java universitario. Se pensate che quello che sto facendo sia inutile o interesante vi prego di farmelo sapere non voglio reinventare l'acqua calda. Ciao e grazie ancora Il giorno 22 luglio 2010 11.54, cl...@ninux.org ha scritto: Ciao. La rcvfrom e' una chiamata bloccante, quindi o usi la sottocitata select o entri nel fantastico mondo dei thread e della programmazione concorrente... Clauz On 07/22/2010 01:54 AM, ZioPRoTo (Saverio Proto) wrote: Consiglio questa lettura: http://beej.us/guide/bgnet/output/html/multipage/index.html nello specifico: http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select Saverio Il 21 luglio 2010 19.05, Filippo Sallemi tonyp...@gmail.com ha scritto: Ciao ragazzi, sto giocherellando un po con C e stavo provando a scrivere un piccolo programma che manda pacchetti UDP ad un host solo che ho notato che la funzione rcvfrom resta bloccata finchè il server non manda una risposta anche vuota. Parte del codice esegue questo: read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)addr, sizeof(addr)); if (read 0) { perror(Request error); return -1; } read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL); if (read 0) { perror(Read error); return -1; } /** * Print results **/ if (read 0) { buffer[read]=0; if (fputs(buffer, stdout) == EOF) { perror(fputs error); return -1; } } Ho provato a usare le fnctl per impostare la socket in modo non bloccante ma ottengo solo l'uscita dal programma e nessun invio di pacchetti. Adesso non è che mi importi tanto avere una risposta dal server e potrei ovviare al problema eliminando la parte di codice dove aspetto risposta, ma la mia curiosità dal punto di vista didattico rimane. Qualcuno saprebbe illuminarmi in qualche modo? Grazie Ciao -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
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. In verità avrei voluto usare snmp per questo genere di cose ma non so se in realtà è la scelta giusta. La scelta di UDP dipende da due fattori: 1. Usare minor banda possibile; 2. Non mi interessa se perdo qualche pacchetto, mi interessa solo dire hei ci sono ogni tot secondi, dove tot è un numero veramente basso. Il software è pensato per una serie di applicazioni lato server e sicuramente non è sufficiente per fare monitoring dei nodi, ma rappresenta un inizio... Filippo Il giorno 22 luglio 2010 16.42, Antonio Anselmi tony.anse...@gmail.com ha scritto: perche' non usare TCP? con UDP spari e speri che il beat arrivi a destinazione, senza alcuna info sullo stato della connesiione Antonio Il 22 luglio 2010 14.45, Michele Favara Pedarsi m...@meganetwork.org ha scritto: 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... 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. ciao Michele Il giorno 22 luglio 2010 14.37, Filippo Sallemi tonyp...@gmail.com ha scritto: Vi ringrazio per il supporto ragazzi, ed è tutto molto interessante. 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. 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. So programmare in concorrenza, ma purtroppo la mia poca esperienza di concorrenza viene da mondo java universitario. Se pensate che quello che sto facendo sia inutile o interesante vi prego di farmelo sapere non voglio reinventare l'acqua calda. Ciao e grazie ancora Il giorno 22 luglio 2010 11.54, cl...@ninux.org ha scritto: Ciao. La rcvfrom e' una chiamata bloccante, quindi o usi la sottocitata select o entri nel fantastico mondo dei thread e della programmazione concorrente... Clauz On 07/22/2010 01:54 AM, ZioPRoTo (Saverio Proto) wrote: Consiglio questa lettura: http://beej.us/guide/bgnet/output/html/multipage/index.html nello specifico: http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select Saverio Il 21 luglio 2010 19.05, Filippo Sallemi tonyp...@gmail.com ha scritto: Ciao ragazzi, sto giocherellando un po con C e stavo provando a scrivere un piccolo programma che manda pacchetti UDP ad un host solo che ho notato che la funzione rcvfrom resta bloccata finchè il server non manda una risposta anche vuota. Parte del codice esegue questo: read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)addr, sizeof(addr)); if (read 0) { perror(Request error); return -1; } read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL); if (read 0) { perror(Read error); return -1; } /** * Print results **/ if (read 0) { buffer[read]=0; if (fputs(buffer, stdout) == EOF) { perror(fputs error); return -1; } } Ho provato a usare le fnctl per impostare la socket in modo non bloccante ma ottengo solo l'uscita dal programma e nessun invio di pacchetti. Adesso non è che mi importi tanto avere una risposta dal server e potrei ovviare al problema eliminando la parte di codice dove aspetto risposta, ma la mia curiosità dal punto di vista didattico rimane. Qualcuno saprebbe illuminarmi in qualche modo? Grazie Ciao -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless ___ Wireless mailing list Wireless@ml.ninux.org
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
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). In generale io vedo come unica informazione del beat, il nodo che lo sta mandando e nient'altro. ovviamente la parte server collezionerà una serie di pacchetti beat in base ai quali saprà se il nodo c'è oppure no. Magari mi sbaglio ma a me pare cristallino. Ciao Il giorno 22 luglio 2010 16.47, Filippo Sallemi tonyp...@gmail.com ha scritto: 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. In verità avrei voluto usare snmp per questo genere di cose ma non so se in realtà è la scelta giusta. La scelta di UDP dipende da due fattori: 1. Usare minor banda possibile; 2. Non mi interessa se perdo qualche pacchetto, mi interessa solo dire hei ci sono ogni tot secondi, dove tot è un numero veramente basso. Il software è pensato per una serie di applicazioni lato server e sicuramente non è sufficiente per fare monitoring dei nodi, ma rappresenta un inizio... Filippo Il giorno 22 luglio 2010 16.42, Antonio Anselmi tony.anse...@gmail.comha scritto: perche' non usare TCP? con UDP spari e speri che il beat arrivi a destinazione, senza alcuna info sullo stato della connesiione Antonio Il 22 luglio 2010 14.45, Michele Favara Pedarsi m...@meganetwork.org ha scritto: 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... 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. ciao Michele Il giorno 22 luglio 2010 14.37, Filippo Sallemi tonyp...@gmail.com ha scritto: Vi ringrazio per il supporto ragazzi, ed è tutto molto interessante. 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. 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. So programmare in concorrenza, ma purtroppo la mia poca esperienza di concorrenza viene da mondo java universitario. Se pensate che quello che sto facendo sia inutile o interesante vi prego di farmelo sapere non voglio reinventare l'acqua calda. Ciao e grazie ancora Il giorno 22 luglio 2010 11.54, cl...@ninux.org ha scritto: Ciao. La rcvfrom e' una chiamata bloccante, quindi o usi la sottocitata select o entri nel fantastico mondo dei thread e della programmazione concorrente... Clauz On 07/22/2010 01:54 AM, ZioPRoTo (Saverio Proto) wrote: Consiglio questa lettura: http://beej.us/guide/bgnet/output/html/multipage/index.html nello specifico: http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select Saverio Il 21 luglio 2010 19.05, Filippo Sallemi tonyp...@gmail.com ha scritto: Ciao ragazzi, sto giocherellando un po con C e stavo provando a scrivere un piccolo programma che manda pacchetti UDP ad un host solo che ho notato che la funzione rcvfrom resta bloccata finchè il server non manda una risposta anche vuota. Parte del codice esegue questo: read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)addr, sizeof(addr)); if (read 0) { perror(Request error); return -1; } read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL); if (read 0) { perror(Read error); return -1; } /** * Print results **/ if (read 0) { buffer[read]=0; if (fputs(buffer, stdout) == EOF) { perror(fputs error); return -1; } } Ho provato a usare le fnctl per impostare la socket in modo non bloccante ma ottengo solo
Re: [Ninux-Wireless] Pacchetti UDP e rcvfrom
in questo caso credo che sul server ci sia una specie di tolleranza, nel senso che se non ricevo beat per n- secondi di fila allora presumibilmente il nodo e' giu' (una specie di validity time alla olsr). Altrimenti, al primo beat perso il server potrebbe credere che il nodo sia a ramengo. Antonio Il 22 luglio 2010 16.53, Filippo Sallemi tonyp...@gmail.com ha scritto: 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). In generale io vedo come unica informazione del beat, il nodo che lo sta mandando e nient'altro. ovviamente la parte server collezionerà una serie di pacchetti beat in base ai quali saprà se il nodo c'è oppure no. Magari mi sbaglio ma a me pare cristallino. Ciao Il giorno 22 luglio 2010 16.47, Filippo Sallemi tonyp...@gmail.com ha scritto: 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. In verità avrei voluto usare snmp per questo genere di cose ma non so se in realtà è la scelta giusta. La scelta di UDP dipende da due fattori: Usare minor banda possibile; Non mi interessa se perdo qualche pacchetto, mi interessa solo dire hei ci sono ogni tot secondi, dove tot è un numero veramente basso. Il software è pensato per una serie di applicazioni lato server e sicuramente non è sufficiente per fare monitoring dei nodi, ma rappresenta un inizio... Filippo Il giorno 22 luglio 2010 16.42, Antonio Anselmi tony.anse...@gmail.com ha scritto: perche' non usare TCP? con UDP spari e speri che il beat arrivi a destinazione, senza alcuna info sullo stato della connesiione Antonio Il 22 luglio 2010 14.45, Michele Favara Pedarsi m...@meganetwork.org ha scritto: 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... 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. ciao Michele Il giorno 22 luglio 2010 14.37, Filippo Sallemi tonyp...@gmail.com ha scritto: Vi ringrazio per il supporto ragazzi, ed è tutto molto interessante. 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. 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. So programmare in concorrenza, ma purtroppo la mia poca esperienza di concorrenza viene da mondo java universitario. Se pensate che quello che sto facendo sia inutile o interesante vi prego di farmelo sapere non voglio reinventare l'acqua calda. Ciao e grazie ancora Il giorno 22 luglio 2010 11.54, cl...@ninux.org ha scritto: Ciao. La rcvfrom e' una chiamata bloccante, quindi o usi la sottocitata select o entri nel fantastico mondo dei thread e della programmazione concorrente... Clauz On 07/22/2010 01:54 AM, ZioPRoTo (Saverio Proto) wrote: Consiglio questa lettura: http://beej.us/guide/bgnet/output/html/multipage/index.html nello specifico: http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select Saverio Il 21 luglio 2010 19.05, Filippo Sallemi tonyp...@gmail.com ha scritto: Ciao ragazzi, sto giocherellando un po con C e stavo provando a scrivere un piccolo programma che manda pacchetti UDP ad un host solo che ho notato che la funzione rcvfrom resta bloccata finchè il server non manda una risposta anche vuota. Parte del codice esegue questo: read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)addr, sizeof(addr)); if (read 0) { perror(Request error); return -1; } read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL); if (read 0) { perror(Read error); return -1;
[Ninux-Wireless] Pacchetti UDP e rcvfrom
Ciao ragazzi, sto giocherellando un po con C e stavo provando a scrivere un piccolo programma che manda pacchetti UDP ad un host solo che ho notato che la funzione rcvfrom resta bloccata finchè il server non manda una risposta anche vuota. Parte del codice esegue questo: read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)addr, sizeof(addr)); if (read 0) { perror(Request error); return -1; } read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL); if (read 0) { perror(Read error); return -1; } /** * Print results **/ if (read 0) { buffer[read]=0; if (fputs(buffer, stdout) == EOF) { perror(fputs error); return -1; } } Ho provato a usare le fnctl per impostare la socket in modo non bloccante ma ottengo solo l'uscita dal programma e nessun invio di pacchetti. Adesso non è che mi importi tanto avere una risposta dal server e potrei ovviare al problema eliminando la parte di codice dove aspetto risposta, ma la mia curiosità dal punto di vista didattico rimane. Qualcuno saprebbe illuminarmi in qualche modo? Grazie Ciao -- Filippo Sallemi ___ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless