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之类的细节
Oct 13 Python
Python 中 Meta Classes详解
Feb 13 Python
Python生成随机数组的方法小结
Apr 15 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
python实现Zabbix-API监控
Sep 17 Python
python3转换code128条形码的方法
Apr 17 Python
python实现证件照换底功能
Aug 20 Python
python3.7将代码打包成exe程序并添加图标的方法
Oct 11 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
Pycharm安装python库的方法
Nov 24 Python
Python实现猜拳与猜数字游戏的方法详解
Apr 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
一个PHP操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
PHP数组实例总结与说明
2011/08/23 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Python 元组(Tuple)操作详解
2014/03/11 Python
Python GUI编程完整示例
2019/04/04 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
教师实习期自我鉴定
2013/10/06 职场文书
教师岗位职责
2013/11/17 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
《搭石》教学反思
2014/04/07 职场文书
求职教师自荐书
2014/06/19 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
委托证明范本
2014/11/25 职场文书
教师个人自我评价
2015/03/04 职场文书
工作调动申请报告
2015/05/18 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS