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 27 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
Python日期的加减等操作的示例
Aug 15 Python
python先序遍历二叉树问题
Nov 10 Python
Python3 Random模块代码详解
Dec 04 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
python2和python3在处理字符串上的区别详解
May 29 Python
python对Excel的读取的示例代码
Feb 14 Python
Django-migrate报错问题解决方案
Apr 21 Python
简单了解Python多态与属性运行原理
Jun 15 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 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
拼音码表的生成
2006/10/09 PHP
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
php $_ENV为空的原因分析
2009/06/01 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
PHP文件操作实例总结
2016/09/27 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
页面使用密码保护代码
2013/04/10 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
js实现楼层导航功能
2017/02/23 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
Python是编译运行的验证方法
2015/01/30 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python字符串和文件操作常用函数分析
2015/04/08 Python
Python合并字符串的3种方法
2015/05/21 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
python进行两个表格对比的方法
2018/06/27 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
编辑硕士自荐信范文
2013/11/27 职场文书
家长写给老师的建议书
2014/03/13 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
道歉短信大全
2015/05/12 职场文书
springboot读取nacos配置文件
2022/05/20 Java/Android