Python实现的非阻塞长连接tcpserver服务器端【epoll版】 下载本文

内容发布更新时间 : 2024/5/19 2:31:59星期一 下面是文章的全部内容请认真阅读。

Python实现的非阻塞长连接tcpserver服务器端【epoll版】

利用epoll实现的非阻塞服务器端代码

这不是一个完整实例, 只是一个参考, 偶没有测试过! #!/usr/bin/env python # -*-coding:UTF-8-*- import select,socket,time

# select.epoll()必须在版本高于py2.6以上使用 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server.bind((\server.listen(1) server.setblocking(0) epoller = select.epoll() epoller.register(server.fileno(),

select.POLLIN|select.POLLERR|select.POLLHUP) print \while True:

ret = epoller.poll() if ret==None: continue try:

if ret[0][1] == select.POLLIN:

clientSock,clientAddr = server.accept() print \ _data = ''; while True:

_tmp = clientSock.recv(1) if _tmp == 0: continue _data +=_tmp

if _tmp == \如接收到换行分割符则分析已接收到的字符串做出相应处理并反馈给客户端 if _data[:len(_data-1)] == 'help': clientSock.send(\Your said:\

_data = '' continue elif _data == 'xiexie':

clientSock.send(\Your said: \

_data = '' continue

print \ except IndexError: epoller.unregister(server.fileno()) socket.close()

print \标签: tcpserver, python, epoll 分类: Python/Java/Erlang学习