Ragazzi come posso implementare un client che possa essere interrotto o stoppato solo dopo avere ricevuto la risposta dal server o solo dopo un timeout di 2 minuti?
Grazie
Ragazzi come posso implementare un client che possa essere interrotto o stoppato solo dopo avere ricevuto la risposta dal server o solo dopo un timeout di 2 minuti?
Grazie
Difficile dirlo se non specifichi con che linguaggio e che librerie stai lavorando...
Amaro C++, il gusto pieno dell'undefined behavior.
si hai ragione scusami. Il linguaggio è il c e lavoro su linux
Aggiunto al titolo come "tag", in futuro ricordatene.
Amaro C++, il gusto pieno dell'undefined behavior.
ok grazie e scusami se non l'ho ricordato di farlo io direttamente
Comunque, il timeout che vuoi mettere è sulla connect (=il server potrebbe non essere in linea) o sulla read (=il server è collegato ma non fornisce dati)?
Amaro C++, il gusto pieno dell'undefined behavior.
veramente questo non viene specificato nel testo ora che vedo...lo implementerei in entrambi così gestisco entrambe le possibilità
In entrambi i casi, l'approccio più classico è usare socket non bloccanti in combinazione con la syscall select.
Crei il socket, lo imposti come non bloccante con una fcntl, chiami la connect; questa restituisce immediatamente anche se il socket non è ancora stato collegato. A questo punto, chiami la select passandole il fd del socket (come fd su cui attendere in scrittura) e il timeout; questa aspetta che il socket venga collegato o che trascorra il timeout. In base al valore restituito vedi se si è connesso oppure è scaduto il timeout. Stesso discorso per le read.
Consiglio: leggiti attentamente la manpage di select e cerca in giro indicazioni sull'IO non bloccante su sistemi Unix.
Amaro C++, il gusto pieno dell'undefined behavior.
scusami la domanda,magari stupida, in questo modo rispondo alla richiesta di un client che si sospende o si interrompe dopo un timeout, e nell'altro caso quando invece si deve interrompere o sospendere dopo aver ricevuto risposta dal server? questa parte non mi è chiara...
Eh?
Amaro C++, il gusto pieno dell'undefined behavior.