python socket多線程通訊執行個體分析(聊天室)

來源:互聯網
上載者:User
本文執行個體講述了python socket多線程通訊方法。分享給大家供大家參考,具體如下:

#!/usr/bin/evn python"""這是一個Socket+多進程的例子(聊天服務端)"""import socketimport threading# 處理中文資料用的encoding = "GBK"def HKServer(client, addr): """ 與用戶端時實通訊函數 加入encoding是為了處理輸入中文資料 client 客戶socket addr  客戶address """ # 通知已有的每個客戶,有新的成員加入 for c in clients: c.send(bytes("[%s]加入\r\n" % addr[1], encoding)) # 接受用戶端資料 say = b"" while True:  data = client.recv(1024)  if not data: break  # 如果不是斷行符號鍵  if data != b'\r\n':   say += data #.encode(encoding)   continue  # 把用戶端發來的內容發給所有的用戶端  for c in clients:   c.send(bytes("[%s]:%s\r\n" % (addr[1], say.decode(encoding)), encoding))  # 內容歸\x0  say = b"" # 客戶離開後,從客戶列表中移隊當前客戶,關閉socket串連 clients.remove(client) client.close() # 通知已有的每個客戶,有成員離開 for c in clients: c.send(bytes("[%s]離開\r\n" % addr[1], encoding))# 用戶端列表clients = []# 設定IP地址與連接埠HOST = ''PORT = 9999# 初始化sockets = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 綁定IP地址與連接埠s.bind((HOST, PORT))# 開始監聽s.listen(1)# 迴圈等待while True: # 接受客戶 client, addr = s.accept() # 啟動新的進程與客戶通訊 thread = threading.Thread(target=HKServer, args=(client, addr)) thread.start() # 記錄新的客戶 clients.append(client)

希望本文所述對大家Python程式設計有所協助。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.