多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > 綜合技術 > listen(int fd, int backlog)中的backlog含義

listen(int fd, int backlog)中的backlog含義

來源:程序員人生   發(fā)布時間:2013-12-26 14:10:38 閱讀次數(shù):5091次

  建站學院(LieHuo.Net)文檔 backlog應該是未完成3次握手連接和已完成3次握手而未被accept的兩對列之和.不知道我說的對不?如果要控制連接數(shù)量,是不是要自己編碼控制...下面的可以。

以下為引用的內容:
while(1)
{
     while( connNumber <= 10 )//maxconn = 10;
     {
           accept();
           pthread_creat();
           connNumber++;
     }
}
thread()
{
  close(fd);
  connNumber--;
}

  2. Linux Kernel 2.6,listen(5),永不 accept,到底能建立成功多少個連接?

以下為引用的內容:

CODE 1:

 

$ perl -MIO::Socket -e '$s=new IO::Socket::INET( LocalPort => 9999, Listen => 5 ); sleep(1) while 1'

CODE 2:

$ perl -MIO::Socket -le 'foreach(1..100000){ $c=new IO::Socket::INET( PeerAddr => "127.0.0.1:9999" ); redo unless $c; push @c, $c; print }'

CODE 3:

 

$ netstat -nat | grep EST | grep 9999 | wc -l

 3.  關于listen(int sockfd, int backlog)backlog的意思

listen(int sockfd, int backlog);我在書上看到在unix編程中backlog這個表示:當有多個客戶端程序和服務端相連時,使用backlog這個表示可以接受的排隊長度。但是我在書上看到這個值一般設為5到10之間

以下為引用的內容:

DESCRIPTION
       To  accept  connections,  a  socket  is first created with socket(2), a willingness to accept incoming connections and a queue limit for incoming connections are specified with listen(), and then the connections are accepted with  accept(2).   The  lis-ten() call applies only to sockets of type SOCK_STREAM or SOCK_SEQPACKET.

       The  backlog  parameter  defines  the  maximum  length  the queue of pending connections may grow to.  If a connection request arrives with the queue full the client may receive an error with an indication of ECONNREFUSED or, if the underlying  protocol supports retransmission, the request may be ignored so that retries succeed.

 整個過程是這樣的:
 在server端維護了兩個隊列,一個是完整隊列,在這個隊列中的描述符都是完成了三次握手的,一個是未完整隊列,在這個隊列中的描述符還沒有接收到客戶端最后的那個ACK。
 而我認為在Linux中這個backlog指的就是那個完整隊列的長度(實際上按照UNP的說法,這個backlog一直以來都存在混淆),所以說雖然這個隊列只能擁有不到20個連接的處理能力,但是對于還沒有處理的連接,會存放到未完整隊列中的。當完整隊列中的描述符被accept取走之后就可以移到完整隊列中來了。

 4. windows 2k 里的listen(SOCKET s,int backlog)的第二個參數(shù)不起作用嗎?

《TCP/IP詳解   卷1:協(xié)議》的Page195有詳細解釋。  
  1)backlog   用于在TCP層接收鏈接的緩沖池的最大個數(shù),這個個數(shù)可在應用層中的listen函數(shù)里設置,當客戶鏈接請求大于這個個數(shù)(緩沖池滿),其它的未進入鏈接緩沖池的客戶端在tcp層上tcp模塊會自動重新鏈接,直到超時(大約57秒后)  
  2)我們的應用層的鏈接完成是要從tcp層的鏈接緩沖池中移出一個(accept函數(shù)實現(xiàn))

 backlog是連接請求隊列的最大長度。  
  1.在WinSock1.1中最大值5。如果backlog小于1,則backlog被置喂1;若backlog大于SOMAXCONN(定義在winsock.h中,值為5),則backlog被置為SOMAXCONN。  
  2.在WinSock2中,沒有制定具體值,它由服務提供者決定  
  3.有時候backlog設置很小,這時我們接進多少臺機器都沒問題是因為服務器機器處理速度很快隊列來不及填滿就處理完了,而且在同一個時刻到來的連接還是很少的。

生活不易,碼農辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美性淫爽www视频播放 | 国产麻豆免费观看 | 日韩欧美中文字幕一区二区三区 | 综合欧美日韩 | 91国内| 久久性网| 色中色在线视频 | 久久久国产精品免费看 | 1区2区3区 | 亚洲黄色影视 | 亚洲精品一区二区观看 | 最近在线中文字幕免费版 | www.国产.com| 中文国产成人精品久久一 | 成人亚洲在线观看 | 免费女人18毛片a级毛片视频 | 亚洲乱码卡三乱码新区 | 国产精品嫩草影院99av视频 | 国产69精品久久 | 福利视频99 | 欧美精品a毛片免费观看 | 1314成人网 | 99精品国产成人a∨免费看 | 自由成熟的性色视频 | 毛片aa| 国产片久久| www.亚洲成人 | 久久国产视屏 | 国产极品美女在线 | 欧美天天性影院 | 性xxxx免费观看视频 | 国产一区二区高清在线 | 欧美高清videos36opsexhd | 国产人人爱 | 久久精品亚洲精品一区 | 国产成人福利在线 | 亚洲爽视频 | www.毛片.com| 亚洲国产精品ⅴa在线观看 亚洲国产精品aaa一区 | 日韩在线观看一区 | 成人国产一区二区 |