select 实现的 socket服务器
来源:互联网 发布:可以刷ubuntu的手机 编辑:程序博客网 时间:2024/05/16 19:23
借鉴了asyncore模块中select.select的使用方法
import socketimport tracebackimport selectEOL1 = b'\n\n'EOL2 = b'\n\r\n'socketmap = {}r,w,e = [],[],[]response = b'HTTP/1.0 200 OK\r\nDate: Mon, 1 Jan 1996 01:01:01 GMT\r\n'response += b'Content-Type: text/plain\r\nContent-Length: 13\r\n\r\n'response += b'Hello, world!'serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)serversocket.bind(('0.0.0.0', 23456))serversocket.listen(1)#serversocket.setblocking(0)listening_fileno = serversocket.fileno()socketmap[listening_fileno] = serversocketprint 'listening_fileno',listening_filenotry: while True: r,w,e = [],[],[] for fd in socketmap: r.append(fd) w.append(fd) e.append(fd) r,w,e = select.select(r,w,e,1) for fd in r: request = b'' isocket = socketmap[fd] if fd == listening_fileno: print 'accepting' clientsock,clientaddr = isocket.accept() #clientsock.setblocking(0) cli_fileno = clientsock.fileno() r.append(cli_fileno) w.append(cli_fileno) e.append(cli_fileno) socketmap[cli_fileno] = clientsock else: print 'reading' while EOL1 not in request and EOL2 not in request: request += isocket.recv(1024) print(request.decode()) for fd in w: print 'writing' osocket = socketmap[fd] osocket.send(response) for fd in e: esocket = socketmap[fd] print 'socket close',fd esocket.close() del socketmap[fd] print "no data coming"except Exception,e: print traceback.print_exc() serversocket.close()
本文章来至源码世界 http://www.ymsky.net/views/65548.shtml
0 0
- select 实现的 socket服务器
- select() +socket 实现 socket服务器 -Linux
- select服务器的实现
- select服务器的实现
- 基于Select模型的Socket服务器
- socket 的select 服务器/客户机程序
- 服务器Select模型的实现
- 【网络】Select服务器的实现
- C++服务器(六):socket 异步模型与select 的实现
- AIR Socket服务器的实现
- socket select模型服务器设计
- socket通信之五:select多路复用的客户/服务器模型
- Socket学习select服务器最简单的客户端
- Socket学习之select多路复用的客户/服务器模型
- Select实现并发服务器
- select服务器简单实现
- select实现并发服务器
- Select服务器代码实现
- 博客
- 15款Bug跟踪管理系统
- 二、树之二叉树
- Unable to compile class for JSP
- 心得体会
- select 实现的 socket服务器
- Unterminated <%@ page tag
- C++ 基本操作 考点总结 (二)
- Unable to compile class for JSP
- Duplicate local variable user
- 不能对 varchar 调用方法。
- 创建唯一约束
- 自娱
- Eclipse的使用