Pregunta

Puede un Cliente que enviar datos a través de un socket UNIX (tipo AF_UNIX) señalizarse busy si el extremo receptor no puede hacer frente a la carga?

o

Tiene que haber un protocolo de cliente-servidor en la parte superior de la toma de corriente para manejar el control de flujo?

¿Fue útil?

Solución

A menos que se incluye este en el protocolo, no hay manera para que el servidor para decirle al cliente para hacer una pausa en el envío de la información.

Otros consejos

Puede definitivamente hacer un bloqueo de enviar a un socket UNIX de dominio. Si búfer de recepción del lado receptor está llena, o si el número de pendientes (no entregado) enviar buffers de los conectores es demasiado alto, el emisor bloque.

SOCK_STREAM UNIX sockets de dominio funciona como sockets TCP. SOCK_DGRAM UNIX sockets de dominio funciona como UDP, excepto que los datagramas de dominio UNIX han garantizado, entrega en orden, mientras que sockets UDP pueden ser reordenadas o se ha caído. (También, UNIX sockets de dominio se puede utilizar para enviar descriptores de archivos y pasar las credenciales de usuario entre procesos, ninguno de los cuales se pueden hacer con TCP, UDP, o tuberías.)

Por lo tanto, debido a que en orden de entrega está garantizada por todos los tipos de UNIX sockets de dominio, el receptor puede simplemente dejar de recibir cuando está ocupada haciendo otras cosas, y el remitente será bloqueado automáticamente cuando no hay más espacio disponible en el búfer (o será notificado de que no hay más espacio de almacenamiento intermedio, si la operación solicitada no bloqueo en su zócalo). Entonces, cuando el receptor comienza a recibir de nuevo, el remitente se le permitirá enviar más.

Aparte de que el servidor tenga algún conocimiento de cuándo es 'ocupado' y el envío de una señal específica posterior (por ejemplo de HTTP 503 Servicio no disponible). También puede configurar la conexión de cliente para el tiempo de espera después de un cierto período de tiempo, y si se obtiene un evento de tiempo de espera, interpretar que a medida que el servidor está ocupado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top