2011-10-12 81 views
0

我正在寫一個簡單的服務器,只是爲了好玩,我意識到第三步意味着調用listen(...)函數需要兩個參數。第二個是backlog。雖然我不完全理解這個論點的含義,但我認爲它將客戶排隊。所以,假設我是對的,我想知道服務器如何在隊列中移動,或者我是否真的要實現這一點?支持多個客戶端的服務器可能聽?

我確實在網上找到了很多關於它的例子,但它們大多包含代碼。我想要更多的理論解釋。 謝謝!

+0

更多的理論解釋美國可以通過閱讀史蒂文斯從Unix網絡編程第4.5節...其積壓的一個很好的解釋。請閱讀[鏈接](http://82.157.70.109/mirrorbooks/unixnetworkprogramming/0131411551_ch04lev1sec5.html) –

回答

0

是的,你是對的 - 積壓可能的連接應該隊列(據我所知它是在Linux上忽略)

在創建你調用accept()就可以了,並假設您的插座阻止監聽套接字 - 中接受呼叫在第一個客戶端請求離開隊列之前不得返回。

所以,你可以這樣做

listen(); 
while(int in_socket=accept()) 
{ 
    if(in_socket>0) 
    // process each client in order they are received 
}