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 25 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
python读取二进制mnist实例详解
May 31 Python
Python验证文件是否可读写代码分享
Dec 11 Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 Python
JSON文件及Python对JSON文件的读写操作
Oct 07 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
AI:如何训练机器学习的模型
Apr 16 Python
Python超详细分步解析随机漫步
Mar 17 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 db类库进行数据库操作
2009/03/19 PHP
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
Python列表元素常见操作简单示例
2019/10/25 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
python实现数字炸弹游戏
2020/07/17 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
包装类的功能、种类、常用方法
2012/01/27 面试题
爱与责任演讲稿
2014/05/20 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
2014年业务工作总结
2014/11/17 职场文书
客户经理岗位职责
2015/01/31 职场文书
华山导游词
2015/02/03 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
python创建字典及相关管理操作
2022/04/13 Python
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技