文档章节

python twisted socket 服务端 客户端

一一无念
 一一无念
发布于 2015/06/12 21:30
字数 337
阅读 1306
收藏 10

使用twisted搭建socket的服务器,并能给客户端发送消息, 比较简单,直接上代码

#coding=utf-8

'''
用于实现给响应客户端的请求,并且可以给客户发送消息,
'''

from twisted.internet import reactor
from twisted.internet.protocol import Protocol, Factory
import time
import thread

#线程体,
def timer(no, interval):
   while True:
       time.sleep(interval)
       print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
       for element in MyFactory.clients:
           print(element) #在这里可以给每个客户端发送消息
           element.transport.getHandle().sendall('dddddddddddd')
   thread.exit_thread()


class MyProtocal(Protocol):
   def connectionMade(self):
       self.factory.addClient(self)

   def connectionLost(self, reason):
       #print(reason)
       
self.factory.deleteClient(self)

   def dataReceived(self, data):
       self.transport.write('okthis is ok ') #在这里接收用户的请求认证,并返回数据,发送数据请使用transport.getHandle().sendall() 保证数据立刻发送到客户端

class MyFactory(Factory):

   protocol = MyProtocal
   clients=[] #用户保存客户端列表,

   def __init__(self):
       thread.start_new_thread(timer,(1,3))
       #启动线程用于处理用于给客户端主动发送数据

   def addClient(self, newclient):
       print(newclient)
       self.clients.append(newclient)

   def deleteClient(self, client):
       print(client)
       self.clients.remove(client)

reactor.listenTCP(9999, MyFactory())
reactor.run()

可以在此基础上完成很多模块的功能。 

存在以下疑惑点,我如何通过代码来控制停止服务器。 (如何使用reactor.stop())

=========================================

使用reactor.callLater()启动一个线程.线程里进行阻塞,或过虑按钮事件(hook)来调用reactor.stop()

© 著作权归作者所有

一一无念
粉丝 58
博文 36
码字总数 18408
作品 0
长沙
私信 提问
python的Socket编程基础

下面一些是python网络编程基础知识,很少在项目中直接使用,都是用的twisted,gevent,tornado等网络框架.但是学习基础知识可以弄懂socket流程. python的socket模块的网络编程步骤和linux c基本一...

flyking
2013/10/23
259
0
【twisted】python上实现TCP通讯

以下实验基于win10==1903、anaconda==2019.07、python==3.6、twisted==19.7.0 0.写在前面 不管是服务器端还是客户端,都是通过的来启动的,所以首先就需要导入包下的模块 从模块的源码中可以...

中年老俞
08/10
35
0
python twisted 笔记

1.Twisted框架构建简单的C/S 要写一个基于twisted框架的服务器,你要实现事件处理器,它处理诸如一个新的客户端连接、新的数据到达和客户端连接中断等情况。 在Twisted中,你的事件处理器定义...

pureboys
2014/01/22
585
0
Python网络编程笔记

一、说明 使用套接字进行网络编程,需要先了解一些有关网络编程的背景信息。 1、客户端/服务器架构: 服务器为一个或多个客户端提供所需的服务,存在的目的就是等待客户端的请求,并响应它们,...

PeanutLike
2016/12/01
145
0
部署Twisted应用程序笔记

Twisted提供了一套扩平台、高扩展的基于服务器和客户端模式的应用程序框架。本文看重Twisted框架在应用程序部署上的特点。另外,Twisted是Python语言所写,提供了除顺序、并发模型之外的事件...

conjohn668
2013/08/12
622
0

没有更多内容

加载失败,请刷新页面

加载更多

用原生js对表格排序

本文转载于:专业的前端网站➸用原生js对表格排序 阿里的模拟笔试题,当时时间有限没写出来,其实是因为自己对原生dom操作不熟悉,这里补一下。 题目的大意是有一个表格,如代码所示 <table>...

前端老手
17分钟前
3
0
IT兄弟连 HTML5教程 HTML5表单 HTML5新增表单元素

HTML5有一些新的表单元素:<datalist>、<keygen>、<output>。不是所有的浏览器都支持HTML5新的表单元素,但即使浏览器不支持该表单属性,仍然可以显示为常规的表单元素。 1 <datalist>元素 ...

老码农的一亩三分地
18分钟前
3
0
【朝花夕拾】Android自定义View篇之(一)View绘制流程

https://www.cnblogs.com/andy-songwei/p/10955062.html

shzwork
20分钟前
4
0
Qt编写自定义控件70-扁平化flatui

一、前言 对于现在做前端开发人员来说,FlatUI肯定不陌生,最近几年扁平化的设计越来越流行,大概由于现在PC端和移动端的设备的分辨率越来越高,扁平化反而看起来更让人愉悦,而通过渐变色产...

飞扬青云
30分钟前
2
0
教你玩转Linux—添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部