python如何通過twisted搭建socket服務(wù)
更新時(shí)間:2020年02月03日 08:55:30 作者:一起來學(xué)python
這篇文章主要介紹了python如何通過twisted搭建socket服務(wù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
這篇文章主要介紹了python如何通過twisted搭建socket服務(wù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
服務(wù)端
# -*- coding: utf-8 -*-
# @Time : 2018/9/19 21:41
# @Author : cxa
# @File : tsTservTW.py
# @Software: PyCharm
'''
Twisted Reactor時(shí)間戳TCP服務(wù)器
'''
from twisted.internet import protocol, reactor
from time import ctime
import msgpack
PORT = 21567
class TSServProtocol(protocol.Protocol):
def connectionMade(self):
'''
當(dāng)客戶端連接的時(shí)候會(huì)執(zhí)行該方法
:return:
'''
clnt = self.clnt = self.transport.getPeer().host
print(f"...來自的{clnt}鏈接:")
def dataReceived(self, data):
'''
接收到客戶端的數(shù)據(jù)
:param data:
:return:
'''
print(f"來自客戶端:{msgpack.unpackb(data,encoding='utf')}")
data = f"{ctime()}:來自服務(wù)器:你好"
self.transport.write(msgpack.packb(data))
if __name__ == '__main__':
# 創(chuàng)建一個(gè)協(xié)議工廠,之所以稱之為工廠是因?yàn)?,每次得到一個(gè)
# 接入連接時(shí),都能"制造"協(xié)議的一個(gè)實(shí)例。
factory = protocol.Factory()
factory.protocol = TSServProtocol
print("....等待鏈接..")
# 使用reactor安裝一個(gè)TCP監(jiān)聽器,檢查服務(wù)請求。
# 當(dāng)它接收到一個(gè)請求時(shí),就會(huì)創(chuàng)建一個(gè)TSServProtocol實(shí)例來處理那個(gè)客戶端的事務(wù)。
reactor.listenTCP(PORT, factory)
reactor.run()
客戶端
# -*- coding: utf-8 -*-
# @Time : 2018/9/19 21:57
# @Author : cxa
# @File : tsTclntTW.py
# @Software: PyCharm
'''
創(chuàng)建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'...發(fā)送數(shù)據(jù) {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()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Python3.6中Twisted模塊安裝的問題與解決
- python安裝twisted的問題解析
- python如何通過twisted實(shí)現(xiàn)數(shù)據(jù)庫異步插入
- python基于twisted框架編寫簡單聊天室
- python 編程之twisted詳解及簡單實(shí)例
- Python 基于Twisted框架的文件夾網(wǎng)絡(luò)傳輸源碼
- 剖析Python的Twisted框架的核心特性
- 實(shí)例解析Python的Twisted框架中Deferred對象的用法
- 詳解Python的Twisted框架中reactor事件管理器的用法
- 使用Python的Twisted框架編寫非阻塞程序的代碼示例
- Python的Twisted框架中使用Deferred對象來管理回調(diào)函數(shù)
- 使用Python的Twisted框架構(gòu)建非阻塞下載程序的實(shí)例教程
- Python的Twisted框架上手前所必須了解的異步編程思想
- 使用Python的Treq on Twisted來進(jìn)行HTTP壓力測試
- 利用Python的Twisted框架實(shí)現(xiàn)webshell密碼掃描器的教程
- 使用Python的Twisted框架實(shí)現(xiàn)一個(gè)簡單的服務(wù)器
- 使用Python的Twisted框架編寫簡單的網(wǎng)絡(luò)客戶端
- python開發(fā)實(shí)例之Python的Twisted框架中Deferred對象的詳細(xì)用法與實(shí)例
相關(guān)文章
詳解Python+OpenCV實(shí)現(xiàn)圖像二值化
圖像二值化就是將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,也就是將整個(gè)圖像呈現(xiàn)出明顯的黑白效果的過程。本文將通過Python+OpenCV實(shí)現(xiàn)這一過程,感興趣的可以學(xué)習(xí)一下2022-05-05
Win10下安裝并使用tensorflow-gpu1.8.0+python3.6全過程分析(顯卡MX250+CUDA9.
這篇文章主要介紹了Win10下安裝并使用tensorflow-gpu1.8.0+python3.6全過程(顯卡MX250+CUDA9.0+cudnn),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
在keras中實(shí)現(xiàn)查看其訓(xùn)練loss值
這篇文章主要介紹了在keras中實(shí)現(xiàn)查看其訓(xùn)練loss值,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
使用 python 實(shí)現(xiàn)單人AI 掃雷游戲
這篇文章主要介紹了使用 python 實(shí)現(xiàn)單人AI 掃雷游戲,今天我們用 Python 完成這個(gè)小程序,并且用AI來學(xué)習(xí)并實(shí)現(xiàn)它,需要的朋友可以參考下2021-08-08

