Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从Flask更改为NodeJS或UDP,或者在Flask中使用更多线程来改进通信?_Android_Node.js_Http_Flask_Udp - Fatal编程技术网

Android 从Flask更改为NodeJS或UDP,或者在Flask中使用更多线程来改进通信?

Android 从Flask更改为NodeJS或UDP,或者在Flask中使用更多线程来改进通信?,android,node.js,http,flask,udp,Android,Node.js,Http,Flask,Udp,我正在创建一个简单的android应用程序来控制本地网络中桌面的鼠标 我已经找到了如何创建预期行为的方法,有些时候效果很好,但有些时候速度很慢 该应用程序使用截击和JsonObjectRequest与服务器通信。 服务器正在使用Flask和HTTP POST 我在想5件需要改进的事情: 将服务器更改为NodeJS 使用UDP协议,因为我不需要确认 在烧瓶中使用一根以上的螺纹 将Volley更改为OkHttp或其他http库。(也许凌空抽射不是问题,但我可能错了。) 从POST更改为GET(听起来

我正在创建一个简单的android应用程序来控制本地网络中桌面的鼠标

我已经找到了如何创建预期行为的方法,有些时候效果很好,但有些时候速度很慢

该应用程序使用截击和JsonObjectRequest与服务器通信。 服务器正在使用Flask和HTTP POST

我在想5件需要改进的事情:

  • 将服务器更改为NodeJS
  • 使用UDP协议,因为我不需要确认
  • 在烧瓶中使用一根以上的螺纹
  • 将Volley更改为OkHttp或其他http库。(也许凌空抽射不是问题,但我可能错了。)
  • 从POST更改为GET(听起来很愚蠢)
  • 因此,如果问题出在服务器中

  • 我应该在烧瓶里用更多的线吗
  • 或者将UDP与烧瓶一起使用是否足以响应+/-60请求/秒
  • 或者有必要将我的服务器更改为NodeJS
  • 或者要获得60转/秒,我需要NodeJS和UDP
  • 任何其他选择都是有效的!谢谢

    烧瓶代码

    from flask import Flask, request
    import win32api, win32con
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
        return "Hello World!"
    
    @app.route("/mouse", methods=['POST'])
    def mouse():        
        x, y = win32api.GetCursorPos()
        win32api.SetCursorPos( (x + request.json['x'], y + request.json['y'] ))
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0')
    
    在Android中,检测到视图中的触摸和移动后,获取deltaX和deltaY,并以x和y的形式发送到/鼠标。我还限制了每秒请求的最大数量,但效果不好

    MouseController.MOUSE_FRAME = 30;
    private View.OnTouchListener onMouseTouch = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
    
            if(motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN){
                mouseX = motionEvent.getX();
                mouseY = motionEvent.getY();
            }
    
    
            if(motionEvent.getActionMasked() == MotionEvent.ACTION_MOVE) {
                Long now = Calendar.getInstance().getTimeInMillis();
                if( now - lastTime > (1000/MouseController.MOUSE_FRAME)){
                    float newX = motionEvent.getX();
                    float newY = motionEvent.getY();
                    float deltaX = newX - mouseX;
                    float deltaY = newY - mouseY;
                    mouseX = newX;
                    mouseY = newY;
    
                    mouseController.move(deltaX, deltaY);
                    lastTime = now;
                }
            }
    
            return true;
        }
    };
    

    为了解决这个问题,我改为UDP通信

    基于这两个教程:

    Android UDP:

    Python UDP:


    问题解决了,现在行动顺利。是的,就是这么简单。

    您需要发布Python代码,以便我们提供帮助。可能不需要切换堆栈。如果您正在发送UDP数据包,那么HTTP将无法使用,因此Flask在这方面没有帮助。