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获取单个程序CPU使用情况趋势图
Mar 10 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
实例讲解Python爬取网页数据
Jul 08 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
Python 互换字典的键值对实例
Feb 12 Python
Python 转换文本编码实现解析
Aug 27 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
python3中sys.argv的实例用法
Apr 24 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
基于OpenCV的网络实时视频流传输的实现
Nov 15 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
ajax实现无刷新分页(php)
2010/07/18 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
extjs之去除s.gif的影响
2010/12/25 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
详解Python函数作用域的LEGB顺序
2016/05/14 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
python如何让类支持比较运算
2018/03/20 Python
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
单位工作证明范文
2014/09/14 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
环保证明
2015/06/23 职场文书
外出学习心得体会范文
2016/01/18 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
MySQL 如何分析查询性能
2021/05/12 MySQL
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers