Python select简单实现socket服务器的方法,pythonsocket,编橙之家本文为大家提供了
Python select简单实现socket服务器的方法,pythonsocket,编橙之家本文为大家提供了
编橙之家本文为大家提供了关于Python select简单实现socket服务器的方法源码示例。源码编写借鉴了asyncore模块中select.select的使用方法,并使用了Python的socket、traceback和select模块方法。
什么是socket服务器?Socket服务器主要用于提供高效及稳定的数据信息处理,和消息的转发等服务。socket服务器直接决定了前台应用程序的性能。
Python select简单实现socket服务器的方法源码如下:
#导入方法模块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)#www.iplaypy.comlistening_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()
注意:以上Python源码首要一定要加上编码声明,这是一个好的编程习惯。
编橙之家文章,
相关内容
- Python MySQLdb模块简单封装的方法源码,pythonmysqldb,日常工
- Python Google talk聊天机器人源码,python聊天机器人,Pytho
- Python语言判断输入的是否是回文数的方法,,Python语言如
- Python localtime()方法计算今天是一年中第几周,pythonloc
- Python实现自动提取国家地理每日图片,,用Python urll
- Python自动输出文件夹下符合条件的全路径名,,Python自动
- Python urllib2发送即时消息到twitter的实现方法,urllib2tw
- Python 按月增加datetime月份的问题,pythondatetime,今天要为
- Python方法解决Url与Tinyurl地址互换问题,pythontinyurl,Pyt
- Python简易邮件查看器源码示例详解,python查看器,Pytho
评论关闭