python socket多線程通訊實(shí)例分析(聊天室)
更新時(shí)間:2016年04月06日 12:19:54 作者:火星大熊貓
這篇文章主要介紹了python socket多線程通訊方法,以聊天室程序?qū)嵗治隽薖ython基于Socket實(shí)現(xiàn)多線程通信的相關(guān)技巧,需要的朋友可以參考下
本文實(shí)例講述了python socket多線程通訊方法。分享給大家供大家參考,具體如下:
#!/usr/bin/evn python """ 這是一個(gè)Socket+多進(jìn)程的例子(聊天服務(wù)端) """ import socket import threading # 處理中文數(shù)據(jù)用的 encoding = "GBK" def HKServer(client, addr): """ 與客戶端時(shí)實(shí)通訊函數(shù) 加入encoding是為了處理輸入中文數(shù)據(jù) client 客戶socket addr 客戶address """ # 通知已有的每個(gè)客戶,有新的成員加入 for c in clients: c.send(bytes("[%s]加入\r\n" % addr[1], encoding)) # 接受客戶端數(shù)據(jù) say = b"" while True: data = client.recv(1024) if not data: break # 如果不是回車鍵 if data != b'\r\n': say += data #.encode(encoding) continue # 把客戶端發(fā)來(lái)的內(nèi)容發(fā)給所有的客戶端 for c in clients: c.send(bytes("[%s]:%s\r\n" % (addr[1], say.decode(encoding)), encoding)) # 內(nèi)容歸\x0 say = b"" # 客戶離開(kāi)后,從客戶列表中移隊(duì)當(dāng)前客戶,關(guān)閉socket連接 clients.remove(client) client.close() # 通知已有的每個(gè)客戶,有成員離開(kāi) for c in clients: c.send(bytes("[%s]離開(kāi)\r\n" % addr[1], encoding)) # 客戶端列表 clients = [] # 設(shè)置IP地址與端口 HOST = '' PORT = 9999 # 初始化socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 綁定IP地址與端口 s.bind((HOST, PORT)) # 開(kāi)始監(jiān)聽(tīng) s.listen(1) # 循環(huán)等待 while True: # 接受客戶 client, addr = s.accept() # 啟動(dòng)新的進(jìn)程與客戶通信 thread = threading.Thread(target=HKServer, args=(client, addr)) thread.start() # 記錄新的客戶 clients.append(client)
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:
- Python socket實(shí)現(xiàn)簡(jiǎn)單聊天室
- Python聊天室?guī)Ы缑鎸?shí)現(xiàn)的示例代碼(tkinter,Mysql,Treading,socket)
- python socket 聊天室實(shí)例代碼詳解
- Python Socket編程之多線程聊天室
- python socket實(shí)現(xiàn)聊天室
- Python基于Socket實(shí)現(xiàn)簡(jiǎn)單聊天室
- 基于Python socket實(shí)現(xiàn)簡(jiǎn)易網(wǎng)絡(luò)聊天室
- python使用socket制作聊天室詳細(xì)源碼(可以直接運(yùn)行)
相關(guān)文章
Python可視化神器pyecharts之繪制地理圖表練習(xí)
這篇文章主要介紹了Python可視化神器pyecharts之繪制地理圖表,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07Python?基于xml.etree.ElementTree實(shí)現(xiàn)XML對(duì)比示例詳解
這篇文章主要介紹了Python?基于xml.etree.ElementTree實(shí)現(xiàn)XML對(duì)比,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12Python編程pygame模塊實(shí)現(xiàn)移動(dòng)的小車示例代碼
這篇文章主要介紹了Python編程pygame模塊實(shí)現(xiàn)移動(dòng)的小車示例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python 調(diào)用 Windows API COM 新法
Python中調(diào)用Win32API 通常都是使用 PyWin32或者ctypes。本文給大家介紹Python 調(diào)用 Windows API COM 新法,感興趣的朋友跟隨小編一起看看吧2019-08-08Python基于opencv實(shí)現(xiàn)的人臉識(shí)別(適合初學(xué)者)
OpenCV是一個(gè)基于BSD許可開(kāi)源發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),下面這篇文章主要給大家介紹了關(guān)于Python基于opencv實(shí)現(xiàn)的人臉識(shí)別,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),本文的教程非常適合初學(xué)者,需要的朋友可以參考下2022-03-03