基于tornado的web linux远程登录
发布时间:2020-05-25 01:19:52 所属栏目:Python 来源:互联网
导读:基于tornado的web linux远程登录
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 import select
import socket
import errno
from threading import Thread
from tornado.websocket import WebSocketClosedError
class IOLoop(Thread):
def __init__(self):
super(IOLoop,self).__init__()
self.daemon = True
self.select = select.epoll()
self.connections = {}
self.websockets = {}
@staticmethod
def instance():
if not hasattr(IOLoop,"_instance"):
IOLoop._instance = IOLoop()
return IOLoop._instance
def register(self,fileno,connection,websocket):
self.select.register(fileno,select.EPOLLIN | select.EPOLLET)
self.connections[fileno] = connection
self.websockets[fileno] = websocket
def run(self):
while True:
epoll_list = self.select.poll()
for fd,events in epoll_list:
if select.EPOLLIN & events:
while True:
try:
data = self.connections[fd].recv(1024)
except socket.error,e:
if e.errno == errno.EAGAIN:
self.select.modify(fd,select.EPOLLET)
elif isinstance(e,socket.timeout):
break
else:
self.close(fd)
try:
self.websockets[fd].write_message(data)
except WebSocketClosedError:
break
elif select.EPOLLHUP & events:
self.close(fd)
else:
continue
def close(self,fd):
self.select.unregister(fd)
self.connections[fd].close()
self.websockets[fd].close()
del self.connections[fd]
del self.websockets[fd]
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
