Uso de librerias en python

Uso de librerias en python

de Bernardo Noria Sabbia -
Número de respuestas: 6

Hola, la consulta es sobre el uso de la librería pickle para codificar y decodificar los frames  para el envio y recepción de las mismas. Es posible utilizar dicha librería?

En respuesta a Bernardo Noria Sabbia

Re: Uso de librerias en python

de Matias Richart -

Hola.

No. Deben ustedes diseñar e implementar un mecanismo de codificación.

Saludos

En respuesta a Matias Richart

Re: Uso de librerias en python

de Matteo Guerrieri Garcia -

Hola.

No entiendo porque no se podría, si lo único que hace es transformar un objeto a string, igual que tostring(), y esto es necesario debido a que los socket solo aceptan strings y byte en el sendto.

pickle.dumps(obj[protocol])

Return the pickled representation of the object as a string, instead of writing it to a file.

En respuesta a Matteo Guerrieri Garcia

Re: Uso de librerias en python

de Matias Richart -

Hola.

De acuerdo, había entendido que lo querían usar para hacer el "framing" que es necesario en el caso de TCP. Para el caso del framing, es decir, para diferenciar los distintos frames dentro del buffer de recepción deben diseñar ustedes la solución.

Entonces, para aclarar:

Los sockets transmiten bytes, por eso es que no se les puede pasar un objeto de python para transmitir, sino que se deben pasar a bytes (serializar).

Algo de suma importancia es que los bytes a transmitir sean solo los bytes que representan el frame codificado en jpg. Con esto quiero decir que está mal transmitir un objeto de python (o java o c++). Un servidor correctamente implementado debe poder transmitir datos que puedan ser entendidos por cualquier cliente, programado en cualquier lenguaje.

Es decir, tu servidor en python debe poder funcionar con un cliente en C que lo único que asume es que recibe un frame codificado en jpg.

No tengo claro como es la API de opencv en python, pero seguramente la función imencode (que se usa para codificar el frame en jpg) les devuelva un buffer con los bytes que representan el frame en jpg. Eso es lo que deben transmitir. Si para obtener esos bytes querés usar pickle esta bien, pero de nuevo, tengan cuidado de no estar serializando un objeto de python que luego un cliente no pueda entender.

Espero haber aclarado.

Saludos


En respuesta a Matias Richart

Re: Uso de librerias en python

de Nestor Valentin Etcheverry Olivieri -

Buenas,

Nosotros no necesitamos codificar los bytes del frame, resolvimos el problema de señalizar cada frame de otra forma. Como dice el compañero, simplemente necesitamos pasarlo a String para que lo lea el socket.

Creo que en este caso, no aporta nada tener que hacerlo a mano.

En respuesta a Nestor Valentin Etcheverry Olivieri

Re: Uso de librerias en python

de Matteo Guerrieri Garcia -
Hola Nestor,

Del lado del servidor, como le pasas el "frame" al cliente sin usar pickle?