Pergunta

Pode um Cliente enviar dados através de um soquete de domínio UNIX (tipo AF_UNIX) ser sinalizado ocupado se o fim de recepção não pode lidar com a carga?

ou

Deve haver um protocolo cliente-servidor na parte superior do soquete para controle de fluxo punho?

Foi útil?

Solução

A menos que você incluir esta no protocolo, não há nenhuma maneira para que o servidor dizer ao cliente para interromper o envio da informação.

Outras dicas

Você pode definitivamente fazer um envio de bloqueio para uma tomada de UNIX Domínio. Se as do lado de recepção recebe buffer está cheio, ou se o número de pendentes (não entregues) buffers de envio de socket é muito alto, o remetente irá bloquear.

SOCK_STREAM UNIX Sockets Domínio trabalho como sockets TCP. SOCK_DGRAM UNIX Sockets Domínio trabalho como UDP, com exceção de entrega que datagramas UNIX Domínio ter garantido, em ordem, enquanto sockets UDP pode ser re-ordenada ou descartado. (Além disso, UNIX soquetes de domínio pode ser usado para enviar descritores de arquivos e passar as credenciais do usuário entre os processos, nenhum dos quais pode ser feito com TCP, UDP, ou tubos.)

Assim, porque no fim-de entrega é garantida por todos os tipos de UNIX soquetes de domínio, o receptor pode simplesmente parar de receber quando se está ocupado fazendo outras coisas, e com o remetente será automaticamente bloqueado quando não há mais o buffer espaço disponível (ou será notificado de que não há mais espaço de buffer, se solicitado operação non-blocking em seu socket). Então, quando o receptor começa a receber novamente, o remetente terá permissão para enviar mais.

Além do servidor ter algum conhecimento de quando é 'ocupado' e enviar um sinal de volta específico (por exemplo, de HTTP 503 Service Unavailable). Você também pode configurar a conexão do lado do cliente para tempo limite após um determinado período de tempo, e se você receber um evento de tempo limite, interpretar isso como o servidor está ocupado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top