python如何通过twisted搭建socket服务


Posted in Python onFebruary 03, 2020

这篇文章主要介绍了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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python下的subprocess模块的入门指引
Apr 16 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
Python 装饰器深入理解
Mar 16 Python
python使用pycharm环境调用opencv库
Feb 11 Python
使用Django和Python创建Json response的方法
Mar 26 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
pytorch:torch.mm()和torch.matmul()的使用
Dec 27 Python
Python 面向对象部分知识点小结
Mar 09 Python
python 爬取免费简历模板网站的示例
Sep 27 Python
通过代码实例了解Python3编程技巧
Oct 13 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
Python爬虫爬取有道实现翻译功能
Nov 27 Python
关于Tensorflow分布式并行策略
Feb 03 #Python
基于python修改srt字幕的时间轴
Feb 03 #Python
Python实现不规则图形填充的思路
Feb 02 #Python
Python ORM编程基础示例
Feb 02 #Python
Python 面向对象之类class和对象基本用法示例
Feb 02 #Python
flask 框架操作MySQL数据库简单示例
Feb 02 #Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 #Python
You might like
学习php开源项目的源码指南
2014/12/21 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
对联广告js flash激活
2006/10/19 Javascript
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
Python自定义线程池实现方法分析
2018/02/07 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
django+echart数据动态显示的例子
2019/08/12 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
python内打印变量之%和f的实例
2020/02/19 Python
Django操作session 的方法
2020/03/09 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
数控机械专业个人的自我评价
2014/01/02 职场文书
美术指导助理求职信
2014/04/20 职场文书
保密协议书范本
2014/04/22 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
学校端午节活动总结
2015/02/11 职场文书
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python