Domanda

Può un Client trasmettere i dati attraverso un socket di dominio UNIX (tipo AF_UNIX) che segnala la impegnato se il ricevente non può far fronte con il carico?

o

Deve esserci un protocollo client-server sulla parte superiore del socket per gestire il controllo di flusso?

È stato utile?

Soluzione

A meno che non include questo nel protocollo, non c'è modo per il server per dire al cliente di mettere in pausa l'invio delle informazioni.

Altri suggerimenti

Si può sicuramente fare un blocking invia ad un socket UNIX dominio. Se buffer di ricezione del lato di ricezione è pieno, o se il numero di circolazione (non consegnato) inviare buffer socket è troppo alta, il mittente bloccherà.

SOCK_STREAM UNIX Domain Socket funzionano come socket TCP. SOCK_DGRAM UNIX Domain Socket funzionano come UDP, se non che i datagrammi UNIX di dominio hanno garantito, in ordine di consegna, mentre i socket UDP possono essere riordinati o eliminati. (Inoltre, UNIX Domain Socket può essere utilizzato per inviare i descrittori di file e passare le credenziali utente tra i processi, nessuno dei quali può essere fatto con il protocollo TCP, UDP, o tubi.)

Quindi, perché in ordine di consegna è garantita da tutti i tipi di UNIX Domain Socket, il ricevitore può semplicemente smettere di ricevere quando si è occupato a fare altre cose, e il mittente sarà bloccata automaticamente quando non c'è più spazio buffer disponibile (o sarà notificato che non c'è più spazio di buffer, se l'operazione richiesta non bloccante sulla loro presa). Poi, quando il ricevitore inizia a ricevere ancora una volta, il mittente potrà inviare più.

A parte il server di avere qualche conoscenza di quando si tratta di 'occupato' e l'invio di un segnale specifico di nuovo (per esempio 503 servizio di HTTP non disponibile). È anche possibile impostare la connessione lato client per terminare dopo un certo periodo di tempo, e se si ottiene un evento di timeout, interpretare tale come il server è occupato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top