首页 > 解决方案 > 如何通过 tcp 从 python 向节点 js 发送 base64 编码图像?

问题描述

我基本上是在做一个项目并且在这一点上被卡住了。我尝试了普通的 tcp,但后来发现图像在节点 js 端部分传输的最大长度约为 65,000。但是在 python 端,总编码图像长度约为 65000 的 3 倍。该图像基本上是我桌面的屏幕截图,分辨率约为 1920 x 1020。这是我的 python 端代码

import socket

HOST = '127.0.0.1'  # Standard loopback interface address (localhost)
PORT = 9898        # Port to listen on (non-privileged ports are > 1023)

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    print("-- start --")
    conn, addr = s.accept()
    print("-- accepted --")
    with conn:
        print('Connected by', addr)
        while True:
            data = conn.recv(1024)
            print("R : ", data)
            if not data:
                break
            print("sending data")
            # b64str is a pre computed string of length around 65000*3
            conn.sendall(bytes(b64str, 'utf-8'))
            

这是Node js端代码

client.connect(9898, '127.0.0.1', function() {
    console.log('CONNECTED : img-data-channel');
});
// buff is a buffer queue that stores the base64 encoded string
client.on('data', function(data) {
    str_data = String.fromCharCode.apply(null, data);
    buff.push_data(str_data);
    // console.log("Received: img-data type : ", typeof(str_data), "  size : ", str_data.length) ;
});

client.on('close', function() {
    console.log('DISCONNECTED : img-data-channel');
});

先感谢您。

标签: pythonnode.jssocketsip

解决方案


推荐阅读