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发布模块的步骤分享
Feb 21 Python
Python编程中的文件操作攻略
Oct 16 Python
python2 与python3的print区别小结
Jan 16 Python
Windows环境下python环境安装使用图文教程
Mar 13 Python
详解Python3.6安装psutil模块和功能简介
May 30 Python
python中嵌套函数的实操步骤
Feb 27 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
Django stark组件使用及原理详解
Aug 22 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
Python批量处理csv并保存过程解析
May 16 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
Python实现Canny及Hough算法代码实例解析
Aug 06 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
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
javascript连续赋值问题
2015/07/08 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
javascript回调函数详解
2018/02/06 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
开发用到的js封装方法(20种)
2018/10/12 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
JS实现多选框的操作
2020/06/24 Javascript
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
python版本的仿windows计划任务工具
2018/04/30 Python
python简易远程控制单线程版
2018/06/20 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
农民入党思想汇报
2014/01/03 职场文书
矫正人员思想汇报
2014/01/08 职场文书
委托协议书范本
2014/04/22 职场文书
信息技术课后反思
2014/04/27 职场文书
学习经验演讲稿
2014/05/10 职场文书
法制演讲稿
2014/09/10 职场文书
销售经理工作检讨书
2015/02/19 职场文书
辩护意见书
2015/06/04 职场文书