[attach]1357[/attach]
?
同時(shí)開5個(gè)窗口,進(jìn)行tcp連接,還是都可以連上
?
?
那么這個(gè)backlog參數(shù),到底該如何使用......
?
?
backlog可以看作是一個(gè)隊(duì)列,里面保存了暫時(shí)未被任何進(jìn)程accept的連接,不影響實(shí)際的在線數(shù)。
大佬 這個(gè)要怎么模擬,我給main資源設(shè)置了backlog為1,每次有新請(qǐng)求連接進(jìn)來都fork一個(gè)進(jìn)程,模擬不出來.....
$a = ["socket"=>["backlog"=>1]];
$context = stream_context_create($a);
$main_socket = stream_socket_server("tcp://0.0.0.0:8888", $error_code, $error_msg,STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,$context);
while(1){ sleep(1);}
以上代碼 還是能同時(shí)有兩個(gè)tcp連接(telnet 127.0.0.1 8888)
ss -tpl 這個(gè)8888端口確實(shí)是1
我補(bǔ)充下:
1、linux2.6內(nèi)核之后,backlog指的是某段時(shí)間內(nèi)完全建立連接【即established】監(jiān)聽隊(duì)列的最大socket隊(duì)列長(zhǎng)度。
2、監(jiān)聽隊(duì)列的最大長(zhǎng)度并不是backlog,而是 backlog+1 。
不可能的,你再把我列的那兩條概念看一下,你說的5個(gè)并不是全連接,你按照walkor說的,不要accept,然后netstat 觀察連接狀態(tài)就能知道是怎么回事了。