selector模块使用
#服务端
from socket import *
import selectors sel=selectors.DefaultSelector()
def accept(server_fileobj,mask):
conn,addr=server_fileobj.accept()
sel.register(conn,selectors.EVENT_READ,read) def read(conn,mask):
try:
data=conn.recv(1024)
if not data:
print('closing',conn)
sel.unregister(conn)
conn.close()
return
conn.send(data.upper()+b'_SB')
except Exception:
print('closing', conn)
sel.unregister(conn)
conn.close() server_fileobj=socket(AF_INET,SOCK_STREAM)
server_fileobj.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
server_fileobj.bind(('127.0.0.1',8088))
server_fileobj.listen(5)
server_fileobj.setblocking(False) #设置socket的接口为非阻塞
sel.register(server_fileobj,selectors.EVENT_READ,accept) #相当于网select的读列表里append了一个文件句柄server_fileobj,并且绑定了一个回调函数accept while True:
events=sel.select() #检测所有的fileobj,是否有完成wait data的
for sel_obj,mask in events:
callback=sel_obj.data #callback=accpet
callback(sel_obj.fileobj,mask) #accpet(server_fileobj,1) #客户端
from socket import *
c=socket(AF_INET,SOCK_STREAM)
c.connect(('127.0.0.1',8088)) while True:
msg=input('>>: ')
if not msg:continue
c.send(msg.encode('utf-8'))
data=c.recv(1024)
print(data.decode('utf-8'))
selector模块使用的更多相关文章
- 读Zepto源码之Selector模块
		
Selector 模块是对 Zepto 选择器的扩展,使得 Zepto 选择器也可以支持部分 CSS3 选择器和 eq 等 Zepto 定义的选择器. 在阅读本篇文章之前,最好先阅读<读Zept ...
 - selector 模块
		
selector 模块进行自动匹配,当是windows系统时,自动匹配select, linux系统时,自动匹配epoll,传输时会明确告诉内核响应服务器的地址,速度要更快 import select ...
 - 190707select和selector模块
		
一.select模块 Python select socket server代码示例 # Author:Li Dongfei import select, socket, sys, queue ser ...
 - python基础(17)-IO模型&selector模块
		
先说一下IO发生时涉及的对象和步骤.对于一个network IO (这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的process (or thread),另一个就是系统内核(k ...
 - selector模块
		
selector selectors模块,此模块允许高级和高效的I / O多路复用,构建在select模块原语上.鼓励用户使用此模块,除非他们需要精确控制所使用的操作系统级原语.( 默认使用epoll ...
 - python使用selector模块编写FTP
		
server import os import socket import time import selectors BASE_DIR = os.path.dirname(os.path.abspa ...
 - RequireJS入门之二——第二例(写自己的模块)
		
第一节遗留的问题: 中文乱码: 修改require.js文件,搜索charset 关键字,修改为GBK:(貌似乱不乱码和jquery版本有问题,切换GBK和utf-8!!) 路 径: 仅 ...
 - 读Zepto源码之Touch模块
		
大家都知道,因为历史原因,移动端上的点击事件会有 300ms 左右的延迟,Zepto 的 touch 模块解决的就是移动端点击延迟的问题,同时也提供了滑动的 swipe 事件. 读 Zepto 源码系 ...
 - 读Zepto源码之Gesture模块
		
Gesture 模块基于 IOS 上的 Gesture 事件的封装,利用 scale 属性,封装出 pinch 系列事件. 读 Zepto 源码系列文章已经放到了github上,欢迎star: rea ...
 
随机推荐
- iOS学习笔记34-加速计和陀螺仪
			
一.CoreMotion框架介绍 我们知道有一些iOS的应用,会有一些特殊的要求,比如: 电子罗盘指南针之类的应用:让我们知道方向. 运动类型软件:让我们知道我们跑步多少公里. 社交软件中的摇一摇功能 ...
 - 洛谷P3768 简单的数学题  【莫比乌斯反演 + 杜教筛】
			
题目描述 求 \[\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} i*j*gcd(i,j) \pmod{p}\] \(n<=10^{10}\),\(p\) ...
 - 怎样抓获或忽略像control-C这样的键盘中断?
			
基本步骤是调用signal():#include <signal.h>singal(SIGINT, SIG_IGN); 就可以忽略中断信号, 或者:extern void func(int ...
 - poj 1981 Circle and Points
			
Circle and Points Time Limit: 5000MS Memory Limit: 30000K Total Submissions: 8131 Accepted: 2899 ...
 - C语言第四题
			
今天就一道题 阅读printf代码的具体实现,要求在阅读过程中要做下列的事 1.至少列出十个c标准库的方法,并且说明他们方法的含义,以及参数的含义 2.至少列出2个c标准库的引入(或者是依赖),并且说 ...
 - 从0到1:全面理解RPC远程调用
			
上一篇关于 WSGI 的硬核长文,不知道有多少同学,能够从头看到尾的,不管你们有没有看得很过瘾,反正我是写得很爽,总有一种将一样知识吃透了的错觉. 今天我又给自己挖坑了,打算将 rpc 远程调用的知识 ...
 - size_t、ptrdiff_t【转】
			
转自:http://www.cnblogs.com/liulipeng/archive/2012/10/08/2715246.html http://longzxr.blog.sohu.com/196 ...
 - GSMArena battery life test
			
GSMArena battery life test Battery Endurance Score = [ Battery Capacity / ( call hrs * a + Browsing ...
 - Linux spi驱动分析(二)----SPI核心(bus、device_driver和device)
			
一.spi总线注册 这里所说的SPI核心,就是指/drivers/spi/目录下spi.c文件中提供给其他文件的函数,首先看下spi核心的初始化函数spi_init(void).程序如下: 点击(此处 ...
 - .NET中JSON的序列化和反序列化的几种方式
			
一.什么是JSON JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集 ...