最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python socket多線程通訊實例分析(聊天室)

 更新時間:2016年04月06日 12:19:54   作者:火星大熊貓  
這篇文章主要介紹了python socket多線程通訊方法,以聊天室程序?qū)嵗治隽薖ython基于Socket實現(xiàn)多線程通信的相關(guān)技巧,需要的朋友可以參考下

本文實例講述了python socket多線程通訊方法。分享給大家供大家參考,具體如下:

#!/usr/bin/evn python
"""
這是一個Socket+多進(jìn)程的例子(聊天服務(wù)端)
"""
import socket
import threading
# 處理中文數(shù)據(jù)用的
encoding = "GBK"
def HKServer(client, addr):
 """
 與客戶端時實通訊函數(shù)
 加入encoding是為了處理輸入中文數(shù)據(jù)
 client 客戶socket
 addr  客戶address
 """
 # 通知已有的每個客戶,有新的成員加入
 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ā)來的內(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""
 # 客戶離開后,從客戶列表中移隊當(dāng)前客戶,關(guān)閉socket連接
 clients.remove(client)
 client.close()
 # 通知已有的每個客戶,有成員離開
 for c in clients: c.send(bytes("[%s]離開\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))
# 開始監(jiān)聽
s.listen(1)
# 循環(huán)等待
while True:
 # 接受客戶
 client, addr = s.accept()
 # 啟動新的進(jìn)程與客戶通信
 thread = threading.Thread(target=HKServer, args=(client, addr))
 thread.start()
 # 記錄新的客戶
 clients.append(client)

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

最新評論

镇沅| 湖北省| 马尔康县| 汝南县| 重庆市| 梅州市| 乐都县| 凌源市| 定州市| 云南省| 新宁县| 嫩江县| 久治县| 封开县| 平果县| 集安市| 香格里拉县| 新安县| 桃园县| 渭源县| 招远市| 沙雅县| 台江县| 依安县| 青海省| 甘南县| 涪陵区| 上杭县| 佛山市| 定日县| 安新县| 宜丰县| 工布江达县| 孙吴县| 章丘市| 始兴县| 永登县| 双江| 武清区| 济南市| 桐柏县|