91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何通過twisted搭建socket服務

發布時間:2020-08-23 18:47:02 來源:腳本之家 閱讀:168 作者:一起來學python 欄目:開發技術

這篇文章主要介紹了python如何通過twisted搭建socket服務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

服務端

# -*- coding: utf-8 -*-
# @Time : 2018/9/19 21:41
# @Author : cxa
# @File : tsTservTW.py
# @Software: PyCharm
'''
Twisted Reactor時間戳TCP服務器
'''
from twisted.internet import protocol, reactor
from time import ctime
import msgpack

PORT = 21567


class TSServProtocol(protocol.Protocol):
  def connectionMade(self):
    '''
    當客戶端連接的時候會執行該方法
    :return:
    '''
    clnt = self.clnt = self.transport.getPeer().host
    print(f"...來自的{clnt}鏈接:")

  def dataReceived(self, data):
    '''
    接收到客戶端的數據
    :param data:
    :return:
    '''
    print(f"來自客戶端:{msgpack.unpackb(data,encoding='utf')}")
    data = f"{ctime()}:來自服務器:你好"
    self.transport.write(msgpack.packb(data))


if __name__ == '__main__':
  # 創建一個協議工廠,之所以稱之為工廠是因為,每次得到一個
  # 接入連接時,都能"制造"協議的一個實例。
  factory = protocol.Factory()

  factory.protocol = TSServProtocol
  print("....等待鏈接..")
  # 使用reactor安裝一個TCP監聽器,檢查服務請求。
  # 當它接收到一個請求時,就會創建一個TSServProtocol實例來處理那個客戶端的事務。
  reactor.listenTCP(PORT, factory)
  reactor.run()

客戶端

# -*- coding: utf-8 -*-
# @Time : 2018/9/19 21:57
# @Author : cxa
# @File : tsTclntTW.py
# @Software: PyCharm
'''
創建Twisted Reactor TCP客戶端
'''
from twisted.internet import protocol, reactor
import msgpack

HOST = 'localhost'
PORT = 21567


class TSClntProtocol(protocol.Protocol):
  def sendData(self):
    data = input('>')
    if data:
      print(f'...發送數據 {data}')
      self.transport.write(msgpack.packb(data))
    else:
      self.transport.loseConnection()

  def connectionMade(self):
    self.sendData()

  def dataReceived(self, data):
    print(msgpack.unpackb(data, encoding="utf8"))
    self.sendData()


class TSClntFactory(protocol.ClientFactory):
  protocol = TSClntProtocol
  clientConnctionLost = clientConnctionFailed = lambda self, connector, reason: reactor.stop()


if __name__ == '__main__':
  reactor.connectTCP(HOST, PORT, TSClntFactory())
  reactor.run()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特中旗| 大余县| 商丘市| 来凤县| 察哈| 密云县| 长治县| 中卫市| 柯坪县| 乡城县| 泗水县| 沁源县| 宝丰县| 甘南县| 陆良县| 阜新市| 许昌县| 景洪市| 巴林左旗| 黄大仙区| 河源市| 巴塘县| 石渠县| 凤庆县| 澜沧| 府谷县| 石嘴山市| 武强县| 庄浪县| 西城区| 乌苏市| 雷波县| 方城县| 庄河市| 汽车| 山东| 岚皋县| 岳西县| 山西省| 怀集县| 敖汉旗|