首页 > 代码库 > Python使用select实现异步通信2
Python使用select实现异步通信2
# -*- coding: utf-8 -*-
# python:2.x
__author__ = ‘Administrator‘
"""
poll实现服务器时,需要用到register()和unregister()方法,作用是加入和移除对象,poll()的返回值包括文件描述和事件,
事件常量有POLLIN,POLLPRI,POLLPOUT,POLLERR,POLLHUP,POLLVAL,分别表示读取数据,读取紧急数据,文件描述符已经准备好,文件描述符出错,连接丢失,无效请求。
"""
#poll服务器
import socket,select
s=socket.socket()
host=""
port=10000
s.bind((host,port))
fdmap={s.fileno():s}
s.listen(5)
p=select.poll()
p.register(s.fileno(),select.POLLIN|select.POLLERR|select.POLLHUP)
while 1:
events=p.poll(5000)
if len(events)!=0:
if events[0][1]==select.POLLIN:
sock,addr=s.accept()
buf=sock.recv(8196)
if len(buf)!=0:
print buf
sock.close()
print "no data"
#客户端
import socket
port=10000
s=socket.socket()
host=socket.gethostname()
s.connect((host,port))
s.send("hello from the client")
s.close()
Python使用select实现异步通信2