What's the meaning the "backlog" in the socket.listen(backlog) is?

Jach Feng jfong at ms4.hinet.net
Wed Feb 17 01:19:58 EST 2021


Kushal Kumaran 在 2021年2月17日 星期三下午12:11:04 [UTC+8] 的信中寫道:
> On Tue, Feb 16 2021 at 07:24:30 PM, Jach Feng <jf... at ms4.hinet.net> wrote: 
> > I am experimenting with multithreading-socket these days. I build a 
> > server to handle each client in a separate thread. All are running on 
> > my local PC. It works fine except the listen() method. 
> > 
> > I set listen(2) and expect to see "error" when more clients than "the 
> > maximum number of queued connections" trying to connect the 
> > server. But, no error!! Even 4 clients can run normally without 
> > problem. 
> > 
> > Am I misunderstanding the meaning of this argument? 
> >
> The argument to listen specifies the maximum number of "outstanding" 
> connection requests. These are connections for which the TCP handshake 
> has completed, but for which the application has not called accept. 
> With your multi-threaded application, I assume each new connection 
> request gets picked up immediately by an accept call, so the queue does 
> not generally grow. 
> 
> If you want a limit on the number of concurrent clients you want to 
> handle, you'll have to implement that yourself. If you're using the 
> threading module, threading.Semaphore will let you implement a simple 
> system. 
> 
> -- 
> regards, 
> kushal

You are right! I do misunderstand its meaning:-(

After the server accepts the 1st connection and paused temperately, I saw the 2nd and 3rd connection is in pending, and the 4th one was rejected immediately.

Thank you (and Jason) for clarifying this mystery:-)

--Jach


More information about the Python-list mailing list