Article View: es.comp.os.linux.programacion
Article #12832Re: Estructuras por socket
From: cesar m. redondo
Date: Mon, 07 May 2001 07:16
Date: Mon, 07 May 2001 07:16
81 lines
3342 bytes
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-mailReferences:
<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