Ho alcuni problemi a capire il funzionamento dei socket in Linux.Come è possibile avere un timeout di invio su un socket non bloccante?
setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(int));
write = write(sockfd, buf, len);
Nel codice precedente come lettura è bufferizzata, invia timeout non ha alcun senso (chiamata di sistema write restituirà immediatamente quando il buffer spazio utente viene copiato nei buffer kernel). La dimensione del buffer di invio è un parametro molto più importante, ma il timeout di invio sembra che non valga nulla. Ma sicuramente ho torto, visto che ho visto un bel po 'di codice che usa SO_SNDTIMEO. Come può il timeout del codice spazio utente utilizzare SO_SNDTIMEO assumendo che il ricevitore sia molto lento?
Potete chiarire quale risultato si sta tentando di ottenere? –
Non c'è alcun risultato che sto cercando di raggiungere, ho posto questa domanda per capire il funzionamento dei socket e in particolare perché SO_SNDTIMEO esiste anche? – 0xhacker
Questa risposta può aiutarti a capire SO_SNDTIMEO: http://stackoverflow.com/a/4182564/10682 –