python socket多線程通訊實例分析(聊天室)
更新時間:2016年04月06日 12:19:54 作者:火星大熊貓
這篇文章主要介紹了python socket多線程通訊方法,以聊天室程序實例分析了Python基于Socket實現(xiàn)多線程通信的相關技巧,需要的朋友可以參考下
本文實例講述了python socket多線程通訊方法。分享給大家供大家參考,具體如下:
#!/usr/bin/evn python
"""
這是一個Socket+多進程的例子(聊天服務端)
"""
import socket
import 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
# 把客戶端發(fā)來的內容發(fā)給所有的客戶端
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
# 初始化socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 綁定IP地址與端口
s.bind((HOST, PORT))
# 開始監(jiān)聽
s.listen(1)
# 循環(huán)等待
while True:
# 接受客戶
client, addr = s.accept()
# 啟動新的進程與客戶通信
thread = threading.Thread(target=HKServer, args=(client, addr))
thread.start()
# 記錄新的客戶
clients.append(client)
希望本文所述對大家Python程序設計有所幫助。
相關文章
Python?基于xml.etree.ElementTree實現(xiàn)XML對比示例詳解
這篇文章主要介紹了Python?基于xml.etree.ElementTree實現(xiàn)XML對比,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12
Python編程pygame模塊實現(xiàn)移動的小車示例代碼
這篇文章主要介紹了Python編程pygame模塊實現(xiàn)移動的小車示例代碼,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Python基于opencv實現(xiàn)的人臉識別(適合初學者)
OpenCV是一個基于BSD許可開源發(fā)行的跨平臺計算機視覺庫,下面這篇文章主要給大家介紹了關于Python基于opencv實現(xiàn)的人臉識別,文中通過實例代碼介紹的非常詳細,本文的教程非常適合初學者,需要的朋友可以參考下2022-03-03

