lorenzo1889
07-11-2012, 21:10
devo creare un serve che accetta connessioni solo entro 60 secondi da quando è attivo. come posso fare? io ho fatto così ma non funziona perfettamente infatti il server accetta le connessioni (la connect del client non restituisce -1) ma i due terminali non riescono a comunicare. questo è il codice
int des;
int tid;
int timer =0;
int main(){
/* bind ........ ambiente*/
signal(SIGALRM, gestoreTimer);
alarm(60);
while(1){
if(timer==0){
des = accept(ds_sock, (struct sockaddr*)&accept_temp, &length); //accept
result = pthread_create(&(tid), NULL, gestisciClient, des); //il thread verrà creato in uno stato "joinable"
if(result != 0){
printf("\nerrore nella creazione del thread\n");
}
}
int gestioneTimer(){
timer=1;
}
quindi prima dell'accept metto un' if con una variarbile che viene gestita dal gestore del segnale SIGALRM. ma non va come posso fare
int des;
int tid;
int timer =0;
int main(){
/* bind ........ ambiente*/
signal(SIGALRM, gestoreTimer);
alarm(60);
while(1){
if(timer==0){
des = accept(ds_sock, (struct sockaddr*)&accept_temp, &length); //accept
result = pthread_create(&(tid), NULL, gestisciClient, des); //il thread verrà creato in uno stato "joinable"
if(result != 0){
printf("\nerrore nella creazione del thread\n");
}
}
int gestioneTimer(){
timer=1;
}
quindi prima dell'accept metto un' if con una variarbile che viene gestita dal gestore del segnale SIGALRM. ma non va come posso fare