校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Python 聊聊socket中的listen()參數(shù)(數(shù)字)到底代表什么

Python 聊聊socket中的listen()參數(shù)(數(shù)字)到底代表什么

熱門標簽:房產(chǎn)電銷外呼系統(tǒng) 蓋州市地圖標注 浙江電銷卡外呼系統(tǒng)好用嗎 地圖標注的意義點 地圖標注微信發(fā)送位置不顯示 315電話機器人廣告 地圖制圖標注位置改變是移位嗎 上海機器人外呼系統(tǒng)哪家好 南京銷售外呼系統(tǒng)軟件

疑問

在調用socket的時候,我們會使用到listen()函數(shù),里面有個參數(shù)叫backlog, 例如:socket.listen(5). 那么這個數(shù)字5到底代表什么意思呢?網(wǎng)上有很多種說法,講的都是概念,很多都是復制粘貼,容易讓人誤解。

解答

下面使用具體的代碼片段來講解:

這是一個電腦本機模擬客服端及服務端的程序,主要功能是建立socket連接后,客戶端輸入關鍵字查詢對應的段子,服務器端返回結果。服務器可以滿足同時服務兩個客戶的查詢操作此程序中還包含了信號量和多線程

以listen(1),參數(shù)設置為1進行講解,是不是將參數(shù)設置為1后,開啟3個客服連接就會報錯呢?并不是!

如下圖所示:

那么問題來了!

問題1:

如上例代碼中,有l(wèi)isten(1),這個1是指什么?只能與1個socket建立鏈接嗎? 為什么我用上面的代碼可以創(chuàng)建大于1個的tcp連接卻沒報錯,如果用網(wǎng)上其他人的說法理論上大于1個連接應該報錯的!

因為:listen(n)傳入的值, n表示的是服務器拒絕(超過限制數(shù)量的)連接之前,操作系統(tǒng)可以掛起的最大連接數(shù)量。n也可以看作是"排隊的數(shù)量"

問題2:

既然沒有報錯,為什么沒有打印用戶3的地址?

因為:服務器正在處理用戶1和用戶2,沒有空閑去接待用戶3,所以用戶3去排隊了。

問題3:

為什么服務器能同時處理用戶1和用戶2?

因為:

這里用到了多線程和信號量,信號量設置為2,也就是允許并發(fā)數(shù)為2,服務器開啟了兩個線程,能同時分別處理用戶1和用戶2。

總結

socket.listen(n)

簡單來說,這里的nt表示socket的”排隊個數(shù)

一般情況下,一個進程只有一個主線程(也就是單線程),那么socket允許的最大連接數(shù)為: n + 1如果服務器是多線程,比如上面的代碼例子是開了2個線程,那么socket允許的最大連接數(shù)就是: n + 2換句話說:排隊的人數(shù)(就是那個n) + 正在就餐的人數(shù)(服務器正在處理的socket連接數(shù)) = 允許接待的總人數(shù)(socket允許的最大連接數(shù))

補充:關于Socket.listen方法的一點體悟

前言

最近在接觸Socket的的時候,關于其中的listen方法感到不解,于是對其進行了一番研究,得出了一點體悟,特此記錄。

詳解

讓我們先來看看listen方法在Python3.6文檔說明:

socket.listen([backlog])

Enable a server to accept connections. If backlog is specified, it must be at least 0 (if it is lower, it is set to 0); it specifies the number of unaccepted connections that the system will allow before refusing new connections. If not specified, a default reasonable value is chosen.

啟用服務器以接受連接。如果指定backlog,則必須至少為0(如果低于0,則設置為0);它指定系統(tǒng)在拒絕新連接之前將允許的未接受連接的數(shù)量。如果未指定,則選擇默認的合理值。

Changed in version 3.5: The backlog parameter is now optional.

在版本3.5中已更改: backlog參數(shù)現(xiàn)在是可選的。

起初我看了這說明想當然的以為是可以接入的Client上限,不過實踐過后發(fā)現(xiàn)并非如此。在網(wǎng)上找的解答基本上就是文檔所言的復述,后來請教了專業(yè)人士后,方知這涉及到Socket的底層知識。

在了解listen方法之前,首先我們需要了解connect方法和accept方法,以下是文檔說明:

socket.connect(address)

Connect to a remote socket at address. (The format of address depends on the address family — see above.)

在地址連接到遠程套接字。(地址的格式取決于地址系列 - 請參見上文)

If the connection is interrupted by a signal, the method waits until the connection completes, or raise a socket.timeout on timeout, if the signal handler doesn't raise an exception and the socket is blocking or has a timeout. For non-blocking sockets, the method raises an InterruptedError exception if the connection is interrupted by a signal (or the exception raised by the signal handler).

如果連接被信號中斷,則該方法等待直到連接完成,或者如果信號處理程序沒有引發(fā)異常并且套接字正在阻塞或者已經(jīng)阻塞,則在超時時引入socket.timeout超時。對于非阻塞套接字,如果連接被信號中斷(或由信號處理程序引發(fā)的異常),則該方法引發(fā)InterruptedError異常。

Changed in version 3.5: The method now waits until the connection completes instead of raising an InterruptedError exception if the connection is interrupted by a signal, the signal handler doesn't raise an exception and the socket is blocking or has a timeout (see the PEP 475 for the rationale).

在版本3.5中已更改:該方法現(xiàn)在等待直到連接完成,而不是提高InterruptedError異常,如果連接被信號中斷,信號處理程序不引發(fā)異常,套接字阻塞或超時(參見 PEP 475)。

socket.accept()

Accept a connection. The socket must be bound to an address and listening for connections. The return value is a pair (conn, address) where conn is a new socket object usable to send and receive data on the connection, and address is the address bound to the socket on the other end of the connection.

接收一個連接.該socket 必須要綁定一個地址和監(jiān)聽連接.返回值是一對(conn, 地址)其中conn是新 t4 > socket對象可用于在連接上發(fā)送和接收數(shù)據(jù),address是連接另一端的套接字的地址。

The newly created socket is non-inheritable.

新創(chuàng)建的套接字non-inheritable。

Changed in version 3.4: The socket is now non-inheritable.

在版本3.4中更改:套接字現(xiàn)在是不可繼承的。

Changed in version 3.5: If the system call is interrupted and the signal handler does not raise an exception, the method now retries the system call instead of raising an InterruptedError exception (see PEP 475 for the rationale).

在版本3.5中更改:如果系統(tǒng)調用中斷并且信號處理程序沒有引發(fā)異常,則此方法現(xiàn)在重試系統(tǒng)調用,而不是引發(fā)InterruptedError異常 PEP 475)。

相比listen方法,它倆就好理解多了,一個是Client用于連接Server的方法,一個是Server用于接收Client的連接申請的方法。

但事實上accept方法一次只能接收一個Client的連接申請,而Client則是多個的,這樣Socket會設計一個隊列來存儲Client的連接申請則是理所當然的。于是accept便從這個隊列里提取首位成員處理即可。

以下是示意圖:

如此便很清晰了,backlog參數(shù)的含義便是這個隊列的最大值,也就是同時受理連接申請的最大值。關于backlog該設置為多少,從Skynet得到的參考為32。如果滿了便需要Client重新connect。以上listen方法之謎便解開了。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Python Socket多線程并發(fā)原理及實現(xiàn)
  • python基于socket模擬實現(xiàn)ssh遠程執(zhí)行命令
  • Python基于Socket實現(xiàn)簡易多人聊天室的示例代碼
  • Python WebSocket長連接心跳與短連接的示例
  • 用Python進行websocket接口測試
  • Python使用socket模塊實現(xiàn)簡單tcp通信
  • python Socket網(wǎng)絡編程實現(xiàn)C/S模式和P2P
  • Python基礎之Socket通信原理

標簽:金華 克拉瑪依 臨汾 赤峰 日照 陽泉 貴州 雙鴨山

巨人網(wǎng)絡通訊聲明:本文標題《Python 聊聊socket中的listen()參數(shù)(數(shù)字)到底代表什么》,本文關鍵詞  Python,聊聊,socket,中的,listen,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python 聊聊socket中的listen()參數(shù)(數(shù)字)到底代表什么》相關的同類信息!
  • 本頁收集關于Python 聊聊socket中的listen()參數(shù)(數(shù)字)到底代表什么的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    一区二区三区蜜桃网| 中文字幕一区视频| 日韩午夜在线影院| 国产喷白浆一区二区三区| 中文字幕成人在线观看| 亚洲美女视频在线| 免费在线看一区| 91美女片黄在线观看91美女| 91蜜桃网址入口| 精品久久久久久久久久久久包黑料| 91精品久久久久久久久99蜜臂| 欧美日韩高清一区二区| 亚洲欧美偷拍三级| 麻豆精品国产传媒mv男同| 成人性色生活片免费看爆迷你毛片| 色综合久久综合中文综合网| 91精品国产欧美一区二区成人| 中文无字幕一区二区三区| 日本不卡一二三区黄网| 色婷婷综合激情| 国产欧美日韩视频在线观看| 美腿丝袜在线亚洲一区| 欧美日韩一区二区在线视频| 欧美韩日一区二区三区四区| 美女精品一区二区| 欧美精品v日韩精品v韩国精品v| 国产精品久久久久永久免费观看| 人人超碰91尤物精品国产| 欧美日韩不卡一区| 日韩高清不卡在线| 欧美高清hd18日本| 日本成人在线网站| 日韩欧美亚洲国产另类 | 日本免费在线视频不卡一不卡二| 一区二区三区在线高清| av高清久久久| 亚洲久草在线视频| 在线免费不卡视频| 日韩中文字幕1| 日韩视频免费观看高清在线视频| 久久99精品久久久久久动态图| 精品国产凹凸成av人网站| 久久99热狠狠色一区二区| 中文字幕免费在线观看视频一区| 床上的激情91.| 一区二区三区精品在线观看| 91精品国产综合久久久久久漫画| 久久av中文字幕片| 中文字幕一区二区三区不卡在线| 色94色欧美sute亚洲13| 韩日av一区二区| 亚洲视频一区在线观看| 日韩一区二区三免费高清| 国产一区二区按摩在线观看| 国产精品久久久久久久午夜片| 欧美中文字幕亚洲一区二区va在线| 五月天中文字幕一区二区| 国产欧美一区二区在线观看| 欧美日韩第一区日日骚| 成人污视频在线观看| 欧美一区二区三区视频免费| 国产一区二区中文字幕| 亚洲精品亚洲人成人网| 亚洲高清在线视频| 亚洲欧美日韩成人高清在线一区| 日韩欧美电影一区| 欧美日韩中文一区| 在线观看亚洲一区| 色综合天天天天做夜夜夜夜做| 久久99国产精品麻豆| 亚洲国产wwwccc36天堂| 亚洲视频一二区| 国产精品国产三级国产专播品爱网| 欧美日韩黄色一区二区| 欧美男生操女生| 5858s免费视频成人| 欧美久久久久久蜜桃| 久久久精品国产免费观看同学| 久久亚洲综合av| 国产亚洲精品aa| 中文字幕av在线一区二区三区| 欧美激情资源网| 国产精品激情偷乱一区二区∴| 国产精品对白交换视频 | 久久99精品国产.久久久久 | 麻豆精品在线视频| 美女视频网站久久| 国产伦精品一区二区三区免费| 国产综合久久久久久鬼色| 狠狠色丁香九九婷婷综合五月| 久久99久久精品欧美| 国产一区在线精品| av爱爱亚洲一区| 欧美人与禽zozo性伦| 精品国产一区二区国模嫣然| 久久综合999| 亚洲曰韩产成在线| 久久99精品久久久久久 | 综合久久久久久久| 日本v片在线高清不卡在线观看| 91麻豆国产在线观看| 视频在线观看一区| 在线区一区二视频| 午夜精品福利一区二区三区蜜桃| 天堂影院一区二区| 99久久婷婷国产| 精品欧美一区二区在线观看| 亚洲少妇30p| 国产精品亚洲午夜一区二区三区| 色综合久久久网| 国产女主播一区| 国产精品88av| 2023国产精华国产精品| 91精品国产aⅴ一区二区| 国产蜜臀97一区二区三区| 蜜臀精品久久久久久蜜臀| 欧美性一二三区| 亚洲永久免费视频| 91麻豆成人久久精品二区三区| 久久久久国产精品麻豆ai换脸| 久久99国产精品久久99果冻传媒| 久久久久久黄色| 国产福利不卡视频| 91精品国产综合久久婷婷香蕉 | 国产欧美日韩麻豆91| 99精品欧美一区| 午夜不卡在线视频| 国产亚洲美州欧州综合国| 国产成人精品免费| 亚洲一区欧美一区| 日韩精品中文字幕一区二区三区| 日韩电影网1区2区| 日本一区二区三区四区| 91成人在线观看喷潮| 精品无人码麻豆乱码1区2区 | 99re在线精品| 青青草91视频| 亚洲欧美另类小说视频| 国产精品小仙女| 亚洲精品乱码久久久久| 精品三级av在线| 成人app下载| 国产精品人妖ts系列视频| 亚洲福利视频一区| 一片黄亚洲嫩模| 国产精品视频免费看| www国产精品av| 日韩西西人体444www| 91精品国产免费久久综合| 欧美日韩免费一区二区三区| 欧美日韩精品一区二区三区蜜桃| 日韩主播视频在线| 亚洲一区二区三区四区在线观看| 精品成人私密视频| 欧美一区二区三区播放老司机| k8久久久一区二区三区| 久久精品国产999大香线蕉| 洋洋成人永久网站入口| 欧美国产日本韩| 26uuu久久综合| 国产精品欧美一区二区三区| 欧美日韩一区二区电影| 色伊人久久综合中文字幕| 91福利区一区二区三区| 国产中文一区二区三区| 美女网站一区二区| 美女在线一区二区| 日本三级韩国三级欧美三级| 亚洲一二三级电影| 亚洲va国产天堂va久久en| av电影一区二区| 91丨porny丨国产| 欧美日韩精品一区视频| 欧美日韩国产综合草草| 欧美日韩高清一区二区三区| 91精品国产综合久久福利| 欧美猛男gaygay网站| 日韩一二在线观看| 久久精品一区蜜桃臀影院| 久久九九全国免费| 国产精品久久免费看| 欧美视频一区在线| 欧美va亚洲va| 亚洲欧洲综合另类在线| 午夜精品成人在线| 久久99最新地址| 91视视频在线观看入口直接观看www| 日本丶国产丶欧美色综合| 4438x亚洲最大成人网| 国产欧美日韩中文久久| 亚洲午夜久久久久久久久电影网| 麻豆视频观看网址久久| 成人国产在线观看| 欧美一级专区免费大片| 国产精品国产三级国产普通话99 | 欧美性淫爽ww久久久久无| 久久女同互慰一区二区三区| 亚洲国产你懂的| 99精品一区二区| 26uuu久久综合|