日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python多線程實現TCP服務端

系統 2163 0

本文實例為大家分享了python多線程實現TCP服務端的具體代碼,供大家參考,具體內容如下

需求

1.創建一個TCP服務器接收服務端發送的信息并給予答復
2.以多線程方式實現接收客戶端信息
3.間客戶端發送的信息解碼輸出

思路分析

1.創建一個TCP客戶端套接字
2.寫一個接收消息的方法,可以接收客戶端消息并解碼輸出
3.客戶端被動監聽,每有一個客戶端連接就創建一個子線程執行接收消息方法

代碼實現

            
# 導入模塊
import socket
import threading


# 接收消息
def recv(client_socket, ip_port):
  while True:
    client_text = client_socket.recv(1024)
    # 如果接收的消息長度不為0,則將其解碼輸出
    if client_text:
      print("[客戶端消息]", ip_port, ":", client_text.decode("gbk"))
      # 給客戶端響應
      client_socket.send("收到\n".encode())
    # 當客戶端斷開連接時,會一直發送''空字符串,所以長度為0已下線
    else:
      print("客戶端", ip_port, "已下線")
      client_socket.close()
      break


# 程序主入口
def main():
  # 創建TCP套接字
  tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 設置端口復用
  tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
  # 綁定端口
  tcp_socket.bind(("", 8080))
  # 設置為被動監聽狀態,128表示最大連接數
  tcp_socket.listen(128)
  while True:
    # 等待客戶端連接
    client_socket, ip_port = tcp_socket.accept()
    print("[新客戶端]:", ip_port, "已連接")
    # 有客戶端連接后,創建一個線程將客戶端套接字,IP端口傳入recv函數,
    t1 = threading.Thread(target=recv, args=(client_socket, ip_port))
    # 設置線程守護
    t1.setDaemon(True)
    # 啟動線程
    t1.start()


if __name__ == '__main__':
  main()
          

執行結果

接收客戶端消息

python多線程實現TCP服務端_第1張圖片 ?

響應客戶端消息

python多線程實現TCP服務端_第2張圖片 ?

客戶端下線后識別

這里寫圖片描述

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 安义县| 江川县| 鹤岗市| 三穗县| 保山市| 读书| 贵溪市| 忻州市| 湖北省| 山阳县| 文昌市| 鹤山市| 东宁县| 商洛市| 惠水县| 邯郸县| 泰来县| 威信县| 那坡县| 鹿泉市| 阜阳市| 秦皇岛市| 洪湖市| 余庆县| 文登市| 香港| 虎林市| 什邡市| 清水河县| 油尖旺区| 福清市| 运城市| 古田县| 东乡| 庄浪县| 广州市| 什邡市| 铁岭市| 宝坻区| 蒙自县| 岱山县|