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 相关文章推荐
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
python如何通过实例方法名字调用方法
Mar 21 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
python腾讯语音合成实现过程解析
Aug 01 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
Python实现疫情通定时自动填写功能(附代码)
May 27 Python
Scrapy实现模拟登录的示例代码
Feb 21 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 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 变量类型的强制转换
2009/10/23 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
基于jQuery的日期选择控件
2009/10/27 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
JavaScript字符串对象
2017/01/14 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
用vue写一个日历
2020/11/02 Javascript
Python字符串逐字符或逐词反转方法
2015/05/21 Python
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
一套Java笔试题
2016/08/20 面试题
数据库的约束含义
2012/09/09 面试题
企业面试题试卷附带答案
2015/12/20 面试题
计算机通信专业推荐信
2014/02/22 职场文书
2014年施工员工作总结
2014/11/18 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
教师见习总结范文
2015/06/23 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android