日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python统计字符串中数字个数 socket_Python中socket中的listen()里参数(数字)到底代表什么?...

發布時間:2025/4/16 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python统计字符串中数字个数 socket_Python中socket中的listen()里参数(数字)到底代表什么?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在調用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允許的最大連接數)

總結

以上是生活随笔為你收集整理的python统计字符串中数字个数 socket_Python中socket中的listen()里参数(数字)到底代表什么?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。