⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 080-jsongateway.py

📁 this code is used for edit on os of s60
💻 PY
字号:
import SocketServer, threading, jsonconn = {}conn_lock = threading.Lock()class ThreadingServer(SocketServer.ThreadingMixIn,\                      SocketServer.TCPServer):    allow_reuse_address = Trueclass Handler(SocketServer.StreamRequestHandler):    def handle(self):        print "A new client connected", self.client_address        msg = json.read_stream(self.rfile)        if "!name" in msg:            name = msg["!name"]            wlock = threading.Lock()            conn_lock.acquire()            conn[name] = (wlock, self.wfile)            conn_lock.release()            print "Client registered (%s)" % name            reply = {"ok": u"registered"}            self.wfile.write(json.write(reply))            self.wfile.flush()        else:             reply = {"err": u"invalid name"}            self.wfile.write(json.write(reply))            return        self.handle_connection(name)    def handle_connection(self, name):                    while True:            try:                msg = json.read_stream(self.rfile)            except:                msg = {"!close": True}            if "!close" in msg:                print "Client exits (%s): %s" %\                      (name, self.client_address)                conn_lock.acquire()                if name in conn:                        del conn[name]                conn_lock.release()                break            elif "!dst" in msg:                wfile = None                conn_lock.acquire()                if msg["!dst"] in conn:                    wlock, wfile = conn[msg["!dst"]]                conn_lock.release()                if wfile:                       wlock.acquire()                    try:                        wfile.write(json.write(msg))                        wfile.flush()                    finally:                        wlock.release()server = ThreadingServer(('', 9000), Handler)print "JSON gateway is running!"print "Waiting for new clients..."server.serve_forever()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -