前言:
這篇文章主要爲大家詳細介紹了Python實現多線程/多進程的TCP服務器,具有一定的參考價值,感興趣的小夥伴們可以參考一下。
多線程的TCP服務器,供大家參考,具體內容如下
背景:同學公司的傳感器設備需要將收集的數據發到服務器上,前期想寫一個簡單的服務器來測試下使用效果,設備收集的數據非常的重要,所以考慮使用TCP協議來實現。
因爲只是測試使用,所以採用多線程的方式,畢竟節省資源嘛(使用協程時會導致I/O阻塞)
開門見山,直接搬上來了
一、tcp_server_v1.0使用說明:
1.運行環境:python3解釋器,並安裝socket、threading模塊;
2.該版本使用多線程實現的多任務;
3.支持多臺設備同時連接,並同時提供服務。
二、代碼邏輯:
指定服務器運行端口爲:8125
創建一個服務器類
實例化一個服務器對象
服務器對象調用類中的方法
1 初始化服務器屬性(def __init__)
1.1 創建套接字
1.2 解決程序端口占用問題
1.3 綁定本地ip地址
1.4 將套接字變爲監聽套接字,最大連接數量爲100
2 定義設備連接方法(def run_forever)
2.1 進入循環
2.2 等待設備連接...
2.2.1 當設備連接,打印設備的 ip 和 port
2.2.2 創建線程,調用業務處理方法,爲該設備提供服務
3 業務處理方法(def service_machine)
3.1 進入循環
3.2 等待接收設備發送數據...
3.2.1 當服務器接收到數據
3.2.2 判斷數據是否爲空
否:打印數據內容,進行業務處理,將處理後的數據結果返回給設備
是:打印設備斷開連接,退出循環,關閉套接字
嗨嘍:正在學習python的小夥伴或者打算學習的,可以加羣領學習資料哦:877562786
代碼實現如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
|
以上就是本文的全部內容,希望對大家的學習有所幫助
最後,小編想說一句話:我是一名python開發工程師,整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習,面試寶典,面試寶典,面試寶典。想要這些資料的可以加羣:877562786