[C] Gestione Segnali Server/Client
-
GIus90
- Prode Principiante
- Messaggi: 7
- Iscrizione: mercoledì 11 maggio 2016, 18:09
- Distribuzione: Ubuntu 15.10
- Sesso: Maschile
[C] Gestione Segnali Server/Client
Sto concludendo il mio progetto della bacheca elettronica remota che consiste in un server sempre attivo che immagazzina i messaggi ricevuti dai client in un file di testo(le richieste dei client vengono gestite in maniera sequenziale dal server). Mi interessava sapere come fare a non far bloccare il server quando si chiude il client durante un operazione. Inoltre volevo gestire la chiusura del socket dopo un timeout affinchè un client non rimanga ad occupare il server per troppo tempo.
Ultima modifica di GIus90 il sabato 14 maggio 2016, 12:37, modificato 1 volta in totale.
- SuperStep
- Entusiasta Emergente

- Messaggi: 2037
- Iscrizione: lunedì 19 dicembre 2011, 16:26
- Desktop: Unity
- Distribuzione: Ubuntu 16.04 LTS x86_64
- Sesso: Maschile
- Località: Somma Vesuviana (NA)
Re: [C] Gestione Segnali Server/Client
se il tuo programma deve essere concorrente allora devi utilizzare i concetti di multiprogrammazione (fork, p_thread) esempio qui: http://www.csl.mtu.edu/cs4411.ck/www/NO ... reate.html
per il timeout delle socket: http://www.freebsd.org/cgi/man.cgi?quer ... &sektion=2
in particolare:
per il timeout delle socket: http://www.freebsd.org/cgi/man.cgi?quer ... &sektion=2
in particolare:
SO_SNDTIMEO set timeout value for output
SO_RCVTIMEO set timeout value for input
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
-
GIus90
- Prode Principiante
- Messaggi: 7
- Iscrizione: mercoledì 11 maggio 2016, 18:09
- Distribuzione: Ubuntu 15.10
- Sesso: Maschile
Re: [C] Gestione Segnali Server/Client
il mio programma deve essere sequenziale, quindi non ho necessità di farlo multithread(il server una volta acceso è in ascolto su una determinata socket, appena si connete un client, soddisfa le richieste e quando si disconnette passa a servire i client successivi, in poche parole il server "serve" un client la volta, se un altro client si connette, esso rimane in Backlog in attesa che si liberi il server). Ho priorità di gestire la chiusura inaspettata del client, cioè se un client si disconnette durante un operazione, devo fare in modo che il serve vada avanti a servire gli altri client . Per come ho implementato il programma, appena chiudo la finestra del client durante un operazione, il server crasha. Non ho la più pallida idea di come risolvere questa cosa (forse SIGPIPE??).
Ho letto che un processo figlio può mandare un segnale al processo padre e quest' ultimo può decidere se gestire il segnale ricevuto o ignorarlo. Il mio dubbio è come fa un client a mandare un segnale al server e quindi il server a decidere di chiudere il client ?
Ho letto che un processo figlio può mandare un segnale al processo padre e quest' ultimo può decidere se gestire il segnale ricevuto o ignorarlo. Il mio dubbio è come fa un client a mandare un segnale al server e quindi il server a decidere di chiudere il client ?
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti