Explique soquete buffers agradar
-
16-09-2019 - |
Pergunta
Eu estava tentando encontrar exemplos sobre programação de socket e veio sobre este script: http://stacklessexamples.googlecode.com/svn/trunk/examples/ networking / mud.py
Ao ler através deste roteiro que eu encontrei esta linha: listenSocket.listen (5)
Pelo que entendi - ele lê 5 bytes do buffer e, em seguida, faz coisas com ele ...
mas o que acontece se mais de 5 bytes foram enviados pela outra extremidade?
no outro lugar desse script que verifica a entrada contra 4 comandos e vê se há \ r \ n na string. comandos não gosta do "look" mais \ r \ n compensar mais de 5 bytes?
Alan
Solução
A seguir é aplicável a soquetes em geral, mas deve ajudar a responder a sua pergunta específica sobre o uso de soquetes de Python.
socket.listen () é usado em um servidor tomada para escutar as solicitações de conexão de entrada.
O parâmetro passado para ouvir é chamado o backlog e significa quantas conexões devem soquete aceitar e colocar em um tampão pendente até terminar a sua chamada para aceitar (). Que se aplica a conexões que estão esperando para se conectar ao seu servidor socket entre o momento de ter chamado listen () eo tempo que você terminar uma chamada correspondente para aceitar ().
Assim, no seu exemplo que você está definindo o backlog para 5 conexões.
Nota ??strong> .. se você configurar seu backlog para 5 conexões, as seguintes ligações (6, 7 etc.) serão descartados ea tomada de ligação receberão um conexão de erro mensagem (algo como um "host recusou ativamente a conexão" mensagem)
Outras dicas
Isso pode ajudar você a entender o código: http://www.amk.ca/ python / howto / soquetes /
O 5
argumento para listenSocket.listen
não é o número de bytes para ler ou tampão, é o backlog
:
ouvir as conexões feitas no socket. Os especifica argumento backlog o número máximo de fila conexões e deve ser pelo menos 1; o valor máximo é dependente do sistema (Geralmente 5).