🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #12832

Re: Estructuras por socket

#12832
From: cesar m. redondo
Date: Mon, 07 May 2001 07:16
81 lines
3342 bytes
Jes�s Carrete Monta�a wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> >>>>> "EXE-Cute" == EXE-Cute  <execute@wanadoo.es> writes:
>
>     EXE-Cute> se pueden enviar estructuras de datos del tipo typedef
>     EXE-Cute> struct mediante un socket (por supuesto suponiendo que
>     EXE-Cute> los 2 programas cliente y servidor la tengan definida
>     EXE-Cute> id�nticamente) tal como se hace en un archivo binario
>     EXE-Cute> normal... es que esto me facilitar�a las cosas al enviar
>     EXE-Cute> una ristra de datos sin tener que descomponer luego la
>     EXE-Cute> cadena de caracteres buscando un car�cter separador y
>     EXE-Cute> esas cosas...
>
>         S�, por qu� no. Supongamos la estructura:
>
> typedef struct{
>         int A;
>         double B;
>         struct timeval C;
> }MyStruct;
>
> Y que tenemos una struct MyStruct Estructura, que queremos
> transmitir. Pues en el lado que env�a:
>
> write(Socket,(void *)&Estructura,sizeof(struct MyStruct));
>
> Y en el que recibe:
>
> read(Socket,(void *)&Estructura,sizeof(struct MyStruct));
>
> Todo ello con el control de errores correspondiente. man read y man
> write.
>
> Un saludo.
> - --
> "!Dios aleje de nosotros la serenidad de los ignorantes!
> �Dios aparte de nosotros la paz de los cobardes!" (De Gasparin)
> Jes�s Carrete Monta�a (Kuantiko) <kuantiko@escomposlinux.org>
> LRU #158442 -> I use free software. | PGP Key -> pgp.rediris.es
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.0.4 (GNU/Linux)
> Comment: Processed by Mailcrypt and GnuPG
>
> iD8DBQE69BN7fUtQQKOnZ1IRAuNmAJsGqK6+iz7JhoIdtBBHuJ1JWS0WJgCeP8C6
> CWPYr0TtZ/MQ8eJUxAGfCt4=
> =AmIa
> -----END PGP SIGNATURE-----

Un consejo, ni intentes mandar en las estructuras algun char* porque ni
de co�a, pero que ni de co�a te va a funcionar, te lo digo por
experiencia propia, si tienes una estructura:

typedef struct{
        int A;
        double B;
        char* D;
        struct timeval C;
}MyStruct;

no te lo va a enviar bien, porque busca el '\0' en la struct timeval C,
quitandole a esta bytes de su informaci�n.

En este caso tienes que enviar una estructura del tipo:

typedef struct{
        int A;
        double B;
        struct timeval C;
}MyStruct;

y luego enviar:

        char* D;

Yo lo he sufrido esto y es la �nica manera en la que he podido enviar los
datos.

Un saludo.
Technical Details
Message-ID: <3AF64BC4.B737246B@mad.tecsidel.es>
Path: arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!canoe.uoregon.edu!logbridge.uoregon.edu!news.rediris.es!news-2.rediris.es!tidos.tid.es!not-for-mail
References: <3AF3F290.1030009@wanadoo.es> <874ruzsvb6.fsf@relativistic.homeip.net>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,5fd35ee70e813e32
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2001-05-07 01:15:03 PST
Path: arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!canoe.uoregon.edu!logbridge.uoregon.edu!news.rediris.es!news-2.rediris.es!tidos.tid.es!not-for-mail
From: "cesar m. redondo" <cesar.redondo@mad.tecsidel.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Estructuras por socket
Date: Mon, 07 May 2001 09:16:21 +0200
Organization: Telefonica I+D
Lines: 82
Message-ID: <3AF64BC4.B737246B@mad.tecsidel.es>
References: <3AF3F290.1030009@wanadoo.es> <874ruzsvb6.fsf@relativistic.homeip.net>
NNTP-Posting-Host: 172.18.70.44
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Mailer: Mozilla 4.61 [en] (X11; I; Linux 2.2.12-20 i686)
X-Accept-Language: es