婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

疑問

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

解答

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

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

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

如下圖所示:

那么問題來了!

問題1:

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

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

問題2:

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

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

問題3:

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

因為:

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

總結

socket.listen(n)

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

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

補充:關于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);它指定系統在拒絕新連接之前將允許的未接受連接的數量。如果未指定,則選擇默認的合理值。

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

在版本3.5中已更改: backlog參數現在是可選的。

起初我看了這說明想當然的以為是可以接入的Client上限,不過實踐過后發現并非如此。在網上找的解答基本上就是文檔所言的復述,后來請教了專業人士后,方知這涉及到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).

如果連接被信號中斷,則該方法等待直到連接完成,或者如果信號處理程序沒有引發異常并且套接字正在阻塞或者已經阻塞,則在超時時引入socket.timeout超時。對于非阻塞套接字,如果連接被信號中斷(或由信號處理程序引發的異常),則該方法引發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中已更改:該方法現在等待直到連接完成,而不是提高InterruptedError異常,如果連接被信號中斷,信號處理程序不引發異常,套接字阻塞或超時(參見 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 必須要綁定一個地址和監聽連接.返回值是一對(conn, 地址)其中conn是新 t4 > socket對象可用于在連接上發送和接收數據,address是連接另一端的套接字的地址。

The newly created socket is non-inheritable.

新創建的套接字non-inheritable。

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

在版本3.4中更改:套接字現在是不可繼承的。

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中更改:如果系統調用中斷并且信號處理程序沒有引發異常,則此方法現在重試系統調用,而不是引發InterruptedError異常 PEP 475)。

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

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

以下是示意圖:

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

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

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

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

巨人網絡通訊聲明:本文標題《Python 聊聊socket中的listen()參數(數字)到底代表什么》,本文關鍵詞  Python,聊聊,socket,中的,listen,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python 聊聊socket中的listen()參數(數字)到底代表什么》相關的同類信息!
  • 本頁收集關于Python 聊聊socket中的listen()參數(數字)到底代表什么的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩精品一区国产麻豆| 色偷偷88欧美精品久久久| 国产xxx精品视频大全| 日韩一区二区在线观看视频| 日韩一区欧美二区| 日韩欧美另类在线| 国产盗摄一区二区| 国产精品国产a| 91福利视频在线| 一区二区三区国产| 3d动漫精品啪啪1区2区免费| 久久成人综合网| 中文乱码免费一区二区| 波多野结衣中文一区| 亚洲一区二区三区影院| 欧美日本一区二区三区四区| 黄页网站大全一区二区| 中文字幕不卡三区| 欧美日韩一本到| 狠狠久久亚洲欧美| 亚洲美女视频一区| 日韩欧美一区二区久久婷婷| 国产不卡免费视频| 亚洲一区精品在线| 国产亚洲va综合人人澡精品| 欧美三级韩国三级日本三斤 | 日韩美女精品在线| 在线不卡中文字幕播放| 国产精品91一区二区| 亚洲久草在线视频| 国产亚洲一区二区在线观看| 日本久久一区二区| 国产乱子伦视频一区二区三区| 亚洲免费观看高清完整版在线观看| 制服丝袜在线91| 不卡一区中文字幕| 亚洲一二三四区| 91精品国产福利在线观看| 国产麻豆一精品一av一免费| 亚洲成在人线免费| 欧美精品一区二区久久婷婷| 成人av在线播放网站| 亚洲国产成人高清精品| 国产日韩欧美电影| 欧美吞精做爰啪啪高潮| 国产成+人+日韩+欧美+亚洲| 日韩黄色免费电影| 樱花影视一区二区| 中文字幕一区二区三区视频| 久久亚区不卡日本| 欧美成人精品二区三区99精品| 在线亚洲人成电影网站色www| 懂色av中文一区二区三区| 国内精品写真在线观看 | 亚洲欧美另类久久久精品| 337p粉嫩大胆噜噜噜噜噜91av | 欧美中文字幕一区二区三区 | 在线精品视频免费播放| a4yy欧美一区二区三区| 国产一区二区成人久久免费影院| 麻豆视频一区二区| 亚洲大片免费看| 五月天丁香久久| 午夜视频在线观看一区二区| 日本特黄久久久高潮 | 亚洲妇女屁股眼交7| 亚洲欧美偷拍卡通变态| 中文字幕五月欧美| 一区二区三区鲁丝不卡| 一区二区三区成人| 亚洲成人免费在线观看| 视频精品一区二区| 日韩av电影一区| 久久精品国产亚洲5555| 国产精品亚洲成人| 成人一区在线看| 91麻豆精东视频| 欧美视频在线一区| 欧美精品v国产精品v日韩精品| 在线欧美一区二区| 在线成人av影院| 久久久.com| 中文字幕中文字幕一区| 亚洲激情中文1区| 久久精品免费观看| 粉嫩aⅴ一区二区三区四区五区| 一道本成人在线| 4438成人网| 国产欧美视频一区二区| 日本一区二区三区电影| 亚洲国产精品久久久男人的天堂| 青青草97国产精品免费观看 | 欧美色偷偷大香| 日韩欧美中文字幕制服| 日本一区二区高清| 丝袜亚洲精品中文字幕一区| 国产一区二区不卡| 欧美天堂一区二区三区| 精品福利二区三区| 亚洲综合av网| 国产成人免费在线视频| 欧美日本在线观看| 亚洲色图制服诱惑| 精品无人码麻豆乱码1区2区 | 国产精品进线69影院| 午夜精品一区二区三区电影天堂| 国内精品写真在线观看| 色婷婷综合中文久久一本| 欧美另类久久久品| 精品成人佐山爱一区二区| 亚洲国产精品欧美一二99| 成人午夜av影视| 欧美va亚洲va香蕉在线| 久久午夜老司机| 丝袜美腿亚洲一区| 欧美自拍丝袜亚洲| 亚洲三级电影网站| 丁香一区二区三区| 欧美久久一区二区| 国产精品进线69影院| 蜜桃视频在线观看一区| 色播五月激情综合网| 日韩精品一区二区三区三区免费| 国产成人av影院| 成人激情午夜影院| 丝袜美腿亚洲综合| 日韩国产高清影视| av在线不卡电影| 精品乱人伦小说| 五月天网站亚洲| 91啦中文在线观看| 国产精品乱码人人做人人爱| 日韩精品亚洲一区| 在线免费观看成人短视频| 久久久91精品国产一区二区三区| 蜜桃av噜噜一区二区三区小说| 91福利小视频| 亚洲影视在线播放| 91精彩视频在线观看| 中文字幕一区二区三区在线观看| 国产一区二区免费看| 精品理论电影在线观看| 日本不卡1234视频| 日韩精品最新网址| 日本视频在线一区| 欧美日韩国产小视频| 亚洲激情图片一区| 色综合亚洲欧洲| 亚洲免费在线视频| 色综合天天视频在线观看| 国产精品污网站| 色综合久久久久久久久| 亚洲成人tv网| 日韩三级视频在线看| 午夜精品福利一区二区三区av| 欧美日韩一区二区电影| 日韩国产欧美在线播放| 91超碰这里只有精品国产| 麻豆91在线播放免费| 国产天堂亚洲国产碰碰| 国产大陆a不卡| 亚洲欧洲精品一区二区精品久久久 | 色综合久久久网| 亚洲欧美区自拍先锋| 欧美日精品一区视频| 美国十次综合导航| 欧美一级艳片视频免费观看| 免费观看日韩电影| 国产精品久久久久影院老司| 欧美日韩中文另类| 国产成人综合视频| 亚洲一区在线观看免费观看电影高清 | 开心九九激情九九欧美日韩精美视频电影 | 丁香六月综合激情| 1024成人网色www| 日韩欧美国产综合| 99视频有精品| 老司机精品视频线观看86| 国产情人综合久久777777| 色999日韩国产欧美一区二区| 一级女性全黄久久生活片免费| 91精品午夜视频| 粉嫩嫩av羞羞动漫久久久| 亚洲一区在线电影| 国产视频在线观看一区二区三区 | 欧美激情在线一区二区三区| 一本久道久久综合中文字幕| 日韩精品91亚洲二区在线观看| 精品国产乱码久久久久久老虎| 91性感美女视频| 麻豆精品在线播放| 亚洲一区二区三区不卡国产欧美| 国产色婷婷亚洲99精品小说| 精品视频在线免费看| 91麻豆成人久久精品二区三区| 狠狠色丁香婷综合久久| 日本中文一区二区三区| 一区二区在线电影| 亚洲精品国产一区二区三区四区在线| 欧美成人a在线|