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

Foi útil?

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 .. 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:

socket.listen(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).

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