Python基于select实现的socket服务器

本文实例讲述了python基于select实现的socket服务器。分享给大家供大家参考,具体如下:

借鉴了asyncore模块中select.select的使用方法

import socketimport tracebackimport selectEOL1 = b''EOL2 = b''socketmap = {}r,w,e = [],[],[]response = b'HTTP/1.0 200 OKDate: Mon, 1 Jan 1996 01:01:01 GMT'response += b'Content-Type: text/plainContent-Length: 13'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()

登录后复制

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2536451.html

(0)
上一篇 2025年3月5日 23:30:53
下一篇 2025年3月5日 23:31:07

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论