0
我正在寫一個簡單的服務器,只是爲了好玩,我意識到第三步意味着調用listen(...)
函數需要兩個參數。第二個是backlog
。雖然我不完全理解這個論點的含義,但我認爲它將客戶排隊。所以,假設我是對的,我想知道服務器如何在隊列中移動,或者我是否真的要實現這一點?支持多個客戶端的服務器可能聽?
我確實在網上找到了很多關於它的例子,但它們大多包含代碼。我想要更多的理論解釋。 謝謝!
我正在寫一個簡單的服務器,只是爲了好玩,我意識到第三步意味着調用listen(...)
函數需要兩個參數。第二個是backlog
。雖然我不完全理解這個論點的含義,但我認爲它將客戶排隊。所以,假設我是對的,我想知道服務器如何在隊列中移動,或者我是否真的要實現這一點?支持多個客戶端的服務器可能聽?
我確實在網上找到了很多關於它的例子,但它們大多包含代碼。我想要更多的理論解釋。 謝謝!
是的,你是對的 - 積壓可能的連接應該隊列(據我所知它是在Linux上忽略)
在創建你調用accept()就可以了,並假設您的插座阻止監聽套接字 - 中接受呼叫在第一個客戶端請求離開隊列之前不得返回。
所以,你可以這樣做
listen();
while(int in_socket=accept())
{
if(in_socket>0)
// process each client in order they are received
}
更多的理論解釋美國可以通過閱讀史蒂文斯從Unix網絡編程第4.5節...其積壓的一個很好的解釋。請閱讀[鏈接](http://82.157.70.109/mirrorbooks/unixnetworkprogramming/0131411551_ch04lev1sec5.html) –