O que são soquetes não bloqueadores?
O que são soquetes não bloqueadores?

Vídeo: O que são soquetes não bloqueadores?

Vídeo: O que são soquetes não bloqueadores?
Vídeo: Bloqueadores de DHT realmente Funcionam? - Dr Lucas Fustinoni 2024, Maio
Anonim

não - soquetes de bloqueio . A solução para este problema é chamada de " não - soquetes de bloqueio ". Por padrão, TCP tomadas estão dentro " bloqueio "modo. Por exemplo, quando você chama recv () para ler de um fluxo, o controle não é retornado ao seu programa até que pelo menos um byte de dados seja lido do site remoto.

Conseqüentemente, o que é bloqueio e não bloqueio de soquete?

No bloqueio modo, o recebimento, envio, conexão (somente TCP) e aceitação (somente TCP) tomada Chamadas de API irão bloquear indefinidamente até que a ação solicitada seja executada. No não - bloqueio modo, essas funções retornam imediatamente. selecione vai bloquear até o tomada está pronto.

Também se pode perguntar: os soquetes estão bloqueando por padrão? Por predefinição , TCP tomadas são colocados em um bloqueio modo. Isso significa que o controle não retorna ao programa até que alguma operação específica seja concluída.

A respeito disso, como você faz um soquete sem bloqueio?

Para marcar um tomada Como não - bloqueio , usamos a chamada de sistema fcntl. Aqui está um exemplo: int flags = guard (fcntl (socket_fd, F_GETFL), "não foi possível obter sinalizadores de arquivo"); guard (fcntl (socket_fd, F_SETFL, flags | O_NONBLOCK), "não foi possível definir sinalizadores de arquivo ");

O que é o bloqueio de soquete?

UMA tomada pode estar em " modo de bloqueio "ou" não bloqueante modo . "As funções de tomadas no bloqueio (ou síncrono) modo não volte até que eles concluam sua ação. Isso é chamado bloqueio porque o tomada cuja função foi chamada não pode fazer nada - está bloqueada - até que a chamada retorne.

Recomendado: