一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python 如何實現(xiàn)最簡單的多人聊天室

 Python集中營 2022-10-10 發(fā)布于甘肅
1,設計思路
  • 服務端:通過創(chuàng)建一個通信的服務端一直處于監(jiān)聽狀態(tài),并且開啟多線程的方式使每個客戶端被監(jiān)聽到以后開啟一個獨立的線程進行通信處理。

  • 客戶端:創(chuàng)建新的客戶端連接,在與服務端完成連接以后并一直保持通信狀態(tài)。

  • 通信方式:socket 套接字通信。

2,項目介紹
  • 項目使用編程語言版本:Python3 語言。

  • Python 依賴庫:time、socket、threading、sys 四個依賴庫。

  • 項目包括兩個模塊:server.py、client.py,server.py 實現(xiàn)服務端的程序執(zhí)行邏輯,client.py 實現(xiàn)客戶端的程序執(zhí)行邏輯。

3,實例敘述
  • 服務端:server.py 完整示例

# -*- coding:utf-8 -*-
# 導入 socket 通訊模塊import socket# 導入時間管理模塊import time# 導入多線程模塊import threading
# 設置服務地址、端口address = ("localhost", 4444)

def run(): # 創(chuàng)建服務端 socket socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 綁定服務地址、端口 socket_server.bind(address) # 設置監(jiān)聽最大等待數(shù)為 5 個 socket_server.listen(5) print("服務已經(jīng)啟動,正在等待客戶端連接......") while True: # 設置睡眠時間 time.sleep(0.1) # 允許客戶端連接 client, info = socket_server.accept() # 啟用新線程調(diào)用消息處理 thread = threading.Thread(target=catch_message,args=(client,info)) # 設置為守護線程 thread.setDaemon(True) # 開啟線程執(zhí)行 thread.start()

def catch_message(client, info): client.send("歡迎來到 Python 聊天室".encode('utf-8')) print("客戶端信息:" + str(info)) while True: try: # 接收客戶端消息、接收最大長度為 1024,并進行 utf-8 解碼 message = client.recv(1024).decode('utf-8') # 校驗是否關閉客戶端 if not message or 'Q' == message: print("關閉客戶端") break print("接收消息:" + message) # 將消息進行 utf-8 編碼后發(fā)給客戶端 client.send(message.encode('utf-8')) except Exception as e: # 異常處理 print(e) break

if __name__ == '__main__': # main 入口函數(shù)執(zhí)行 run()
  • 客戶端:client.py 完整示例

# -*- coding:utf-8 -*-
# 導入socket 通信模塊import socket# 導入系統(tǒng) sys 模塊import sys
# 設置客戶端請求連接地址、端口address = ("localhost", 4444)

def run(): try: # 創(chuàng)建客戶端 socket socket_client = socket.socket() # 連接服務端 socket_client.connect(address) # 接收服務端消息并進行 utf-8 解碼 print(socket_client.recv(1024).decode()) while True: # 允許控制臺輸入 message = input("請輸入 >>") if len(message) == 0: continue else: # 將控制臺輸入消息進行 utf-8 編碼后發(fā)送 socket_client.send(message.encode('utf-8')) # 接收服務端消息并進行 utf-8 解碼 print(socket_client.recv(1024).decode('utf-8')) # 客戶端關閉 socket_client.close() except Exception as e: # 異常 處理 print(e) sys.exit(0)

if __name__ == '__main__': # 主函數(shù)入口 run()
  • 程序執(zhí)行步驟

    (1)第一步,啟動服務端 python server.py

    (2)第二步,啟動客戶端 python client.py

    (3)第三步,多個客戶端繼續(xù)啟動 python client.py

4,效果展示

5,展望

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    蜜臀人妻一区二区三区| 麻豆91成人国产在线观看| 久热久热精品视频在线观看| 久久永久免费一区二区| 最新日韩精品一推荐日韩精品| 亚洲国产香蕉视频在线观看| 色婷婷在线精品国自产拍| 伊人网免费在线观看高清版| 久久精品一区二区少妇| 婷婷一区二区三区四区| 精品国产丝袜一区二区| 欧美三级精品在线观看| 91蜜臀精品一区二区三区| 91精品国产品国语在线不卡| 美女黄色三级深夜福利| 亚洲成人黄色一级大片| 中文字幕欧美视频二区| 亚洲高清一区二区高清| 日韩精品视频免费观看| 久久福利视频在线观看| 午夜传媒视频免费在线观看| 日本少妇三级三级三级| 成人午夜视频在线播放| 国产一级片内射视频免费播放| 在线欧洲免费无线码二区免费| 欧美日韩亚洲巨色人妻| 黄片在线免费观看全集| 欧洲偷拍视频中文字幕| 精品国产亚洲av久一区二区三区| 欧美人妻免费一区二区三区| 国产福利一区二区三区四区| 麻豆国产精品一区二区三区| 国产一二三区不卡视频| 日韩在线精品视频观看| 国产一区二区在线免费| 偷自拍亚洲欧美一区二页| 台湾综合熟女一区二区| 国产日本欧美特黄在线观看| 国产激情一区二区三区不卡| 日本午夜免费福利视频| 日本欧美视频在线观看免费|