Python中的select模块如何使用?
来源:互联网 发布:js 计算时间差多少秒 编辑:程序博客网 时间:2024/06/05 21:58
本文和大家分享的主要是python中select模块相关内容,一起来看看吧,希望对大家学习python有所帮助。
这个模块允许你检查一个或多个socket接收数据,或者连接进来,同时也可以检查文件管道等等。
使用select函数可以检查多个socket是否可读、可写、出错等状态。
一个socket是否可读,主要有三种情况:1)新的连接进来 2)有数据可以接收 3)socket关闭、出错
一个socket是否可写,主要有两种情况:1)一个连接调用connect之后连接成功 2)数据可以发送
例子如下:
# File: select-example-1.py
import selectimport socketimport struct, time
PORT = 8037
TIME1970 = 2208988800
service = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
service.bind(("", PORT))
service.listen(1)
print("listening on port", PORT)
while True:
is_readable = [service]
is_writable = []
is_error = []
r, w, e = select.select(is_readable, is_writable, is_error, 1.0)
if r:
channel, info = service.accept()
print("connection from", info)
t = int(time.time()) + TIME1970
t = struct.pack("!I", t)
channel.send(t) # send timestamp channel.close() # disconnect
else:
print("still waiting")
输出结果如下:
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
connection from ('127.0.0.1', 53313)
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
still waiting
测试的客户端例子:
# File: socket-example-1.py
import socket
import struct, time
# server
HOST = '127.0.0.1'#"time.nist.gov"
PORT = 8037
# reference time (in seconds since 1900-01-01 00:00:00)
TIME1970 = 2208988800 # 1970-01-01 00:00:00
# connect to server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
# read 4 bytes, and convert to time value
t = s.recv(4)
t = struct.unpack("!I", t)[0]
t = int(t - TIME1970)
s.close()
# print results
print("server time is", time.ctime(t))
print("local clock is", int(time.time()) - t, "seconds off")
来源:大坡3D软件开发
阅读全文
0 0
- Python中的select模块如何使用?
- Python:简单select模块使用
- python里使用select模块
- 如何安装Python中的模块
- 如何使用Python模块 html5lib
- python模块中的__name__使用
- python --select模块
- Python的Select模块
- 如何在python使用图片处理模块?
- python如何使用unit test 模块
- python select模块实现并发
- python中的线程使用--threading模块
- Python中的模块介绍和使用
- python下的select模块使用 以及epoll与select、poll的区别
- Backbone.js中的Events模块如何使用?
- python中的pickle如何使用
- 【python 加密解密】python中的加密解密模块使用
- 如何在SQL Server中的SELECT TOP 中使用变量
- 用C实现Lenet的总结
- Tomcat7 的目录结构
- HDU 6189 Law of Commutation 2017ACM-ICPC 广西邀请赛 (打表找规律)
- Hibernate(6)——注解的使用
- BZOJ 2783: [JLOI2012]树
- Python中的select模块如何使用?
- 网易2018校招内推--独立生活天数
- 简单轮播图1(从上往下)
- 简单日历自己做~jquery
- hdu6165
- 「网络流 24 题」最小路径覆盖
- QT中QString 类的使用--获取指定字符位置、截取子字符串等
- PAT 乙级 1027
- 机器学习提升算法之Adaboost、GB、GBDT与XGBoost算法