Как отправить изображение в кодировке base64 через tcp из python на узел js?

#python #node.js #sockets #ip

#python #node.js #сокеты #ip

Вопрос:

Я в основном работаю над проектом и застрял на этом этапе. Я попробовал обычный tcp, но позже обнаружил, что изображение было частично передано с максимальной длиной около 65 000 на конце узла js. Но общая длина закодированного изображения примерно в 3 раза больше 65000 на стороне python. Изображение в основном представляет собой снимок экрана моего рабочего стола с разрешением около 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'))
            
 

Вот код на стороне узла 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');
});

 

Заранее спасибо.