Domanda

Stavo cercando di trovare esempi sulla programmazione dei socket e mi sono imbattuto in questo script:http://stacklessexamples.googlecode.com/svn/trunk/examples/networking/mud.py

Durante la lettura di questo script ho trovato questa riga:ascoltaSocket.ascolta(5)

A quanto ho capito, legge 5 byte dal buffer e poi ci fa delle cose ...

ma cosa succede se dall'altra parte vengono inviati più di 5 byte?

nell'altro posto di quello script controlla l'input rispetto a 4 comandi e vede se c'è nella stringa.comandi come "guarda" più non compensano più di 5 byte?

Alan

È stato utile?

Soluzione

Quanto segue è applicabile ai socket in generale, ma dovrebbe aiutare a rispondere alla tua domanda specifica sull'uso dei socket da Python.

socket.listen() viene utilizzato su a server socket per ascoltare le richieste di connessione in entrata.

Il parametro passato in ascolto si chiama the arretrato e indica quante connessioni il socket dovrebbe accettare e inserire in un buffer in sospeso finché non finisci la chiamata ad accetta().Ciò si applica alle connessioni che sono in attesa di connettersi al socket del tuo server tra il momento in cui hai chiamato listen() e il momento in cui hai terminato una chiamata corrispondente ad accetta().

Quindi, nel tuo esempio stai impostando il backlog su 5 connessioni.

Nota..se imposti il ​​tuo backlog su 5 connessioni, le connessioni successive (6a, 7a ecc.) verranno eliminate e il socket di connessione riceverà un errore di connessione messaggio (qualcosa come il messaggio "l'host ha rifiutato attivamente la connessione")

Altri suggerimenti

Questo potrebbe aiutare a capire il codice: http://www.amk.ca/ python / howto / prese /

Il 5 argomento listenSocket.listen non è il numero di byte da leggere o buffer, è il backlog:

  

socket.listen(backlog)

     

Ascolta per le connessioni fatte al   zoccolo. I specifica argomento backlog   il numero massimo di coda   connessioni e deve essere di almeno 1;   il valore massimo è dipendente dal sistema   (Di solito 5).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top