[l-desarrollo] Construcción de paquete de datos en Perl

3 views
Skip to first unread message

Alberto Mijares

unread,
Jun 20, 2012, 9:44:27 AM6/20/12
to Aplicaciones y Desarrollo en Linux
Hola lista,

Voy a implementar un protocolo de comunicación que usa TCP como
transporte. Es sencillo: cada paquete de datos está compuesto por un
mensaje, cada mensaje contiene segmentos, cada segmento contiene
campos y dentro de cada campo están los valores. Los separadores con
caracteres de control ASCII en la mayoría de los casos.

Quisiera que me recomendaran un módulo con el que pueda definir la
estructura de datos y luego construir paquetes y luego leerlos como si
se tratara de XML::Simple, por ejemplo.

Como cliente TCP voy a usar IO::Socket::INET, a menos que quieran
sugerir algo más simple.

Gracias de antemano.

Saludos


Alberto Mijares
_______________________________________________
l-desarrollo mailing list
l-desa...@velug.org.ve
http://listas.velug.org.ve/mailman/listinfo/l-desarrollo

Angel Leon

unread,
Jun 20, 2012, 2:15:45 PM6/20/12
to Aplicaciones y Desarrollo en Linux
pack() / unpack() ?

o usa Bencoding (good enough for BitTorrent)



http://twitter.com/gubatron



2012/6/20 Alberto Mijares <amij...@gmail.com>

Alberto Mijares

unread,
Jun 22, 2012, 12:01:46 AM6/22/12
to Aplicaciones y Desarrollo en Linux
2012/6/20 Angel Leon <guba...@gmail.com>:

> pack() / unpack() ?
>
> o usa Bencoding (good enough for BitTorrent)
> http://search.cpan.org/dist/Bencode/lib/Bencode.pm


Hasta donde he visto, Data::Nested se ajusta más a lo que necesito. De
todas formas sigo buscando algo de más alto nivel.

Ernesto Hernández-Novich

unread,
Jun 22, 2012, 8:47:14 AM6/22/12
to Aplicaciones y Desarrollo en Linux
On Wed, 2012-06-20 at 09:14 -0430, Alberto Mijares wrote:
> Hola lista,
>
> Voy a implementar un protocolo de comunicación que usa TCP como
> transporte. Es sencillo: cada paquete de datos está compuesto por un
> mensaje, cada mensaje contiene segmentos, cada segmento contiene
> campos y dentro de cada campo están los valores. Los separadores con
> caracteres de control ASCII en la mayoría de los casos.
>
> Quisiera que me recomendaran un módulo con el que pueda definir la
> estructura de datos y luego construir paquetes y luego leerlos como si
> se tratara de XML::Simple, por ejemplo.
>
> Como cliente TCP voy a usar IO::Socket::INET, a menos que quieran
> sugerir algo más simple.

¿Realmente necesitas hacerlo en la capa TCP? Podrías usar Net::Server
para escribir el lado del servidor, olvidarte de empaquetar y
desempaquetar cosas, para simplemente usar texto de un lado para otro.
--
Ernesto Hernández-Novich - @iamemhn - Unix: Live free or die!
Geek by nature, Linux by choice, Debian of course.
If you can't aptitude it, it isn't useful or doesn't exist.
GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3

Alberto Mijares

unread,
Jun 22, 2012, 10:21:00 AM6/22/12
to emhn...@gmail.com, Aplicaciones y Desarrollo en Linux
> ¿Realmente necesitas hacerlo en la capa TCP? Podrías usar Net::Server
> para escribir el lado del servidor, olvidarte de empaquetar y
> desempaquetar cosas, para simplemente usar texto de un lado para otro.


Sí. El servidor ya está hecho y es un equipo de análisis de
laboratorio; nada que yo pueda cambiar. Solo estoy haciendo una
implementación del protocolo especificado en el manual del analizador.

Saludos


Alberto Mijares

Alberto Mijares

unread,
Jun 22, 2012, 11:17:01 AM6/22/12
to emhn...@gmail.com, Aplicaciones y Desarrollo en Linux
2012/6/22 Alberto Mijares <amij...@gmail.com>:

>> ¿Realmente necesitas hacerlo en la capa TCP? Podrías usar Net::Server
>> para escribir el lado del servidor, olvidarte de empaquetar y
>> desempaquetar cosas, para simplemente usar texto de un lado para otro.
>
>
> Sí. El servidor ya está hecho y es un equipo de análisis de
> laboratorio; nada que yo pueda cambiar. Solo estoy haciendo una
> implementación del protocolo especificado en el manual del analizador.
>


Una aclaratoria: lo que necesito de TCP es el transporte únicamente;
es decir, primero le doy formato al mensaje de acuerdo a las
especificaciones del protocolo (data package) y luego establezco una
conexión TCP para enviar (o solicitar y recibir) los datos. Pero al
final del cuento lo que se transmite es texto.

Por eso hago la similitud con XML::Simple, salvo que en este caso no
son etiquetas sino caracteres de control ASCII los que van a dar la
estructura anidada; y que en el caso de XML generalmente se usa HTTP
como transporte (pero ese es otro tema), mientras que aquí sería TCP.

Reply all
Reply to author
Forward
0 new messages