🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Estructuras por socket

#12838
From: cesar m. redondo
Date: Mon, 07 May 2001 14:28
47 lines
2843 bytes
>         no es que no vaya a funcionar, funciona perfectamente; lo
>         que pasa es que no tiene sentido.

no funciona, en esto consiste mi proyecto fin de carrera y he hecho montones
(pero montones) de pruebas y te aseguro que no funciona mandar un char* en
una estructura.

>         Estas pasando una direccion de memoria que (se supone)
>         apunta a una cadena del proceso cliente al servidor, en
>         el que esa misma posicion de memoria a saber a donde apunta.

Siento contradecirte pero no pasa la direcci�n de memoria, pasa el contenido
del char*, porque los char* sabes que tienen un tratamiento especial y
siempre que pones char* va al contenido de la direcci�n apuntada por esa
varible char*, te envia por el socket la cadena de texto que tengas en esa
variable lo que pasa es que no te env�a el \0 con lo que en el servidor al
reconstruir la estructura se cree que es cadena de texto hasta que encuentra
un 0 que puede ser un 0 de datos enteros que vengan posteriormente, un
ejemplo para explicar esto:

        typedef struct
        {
                int a;
                char* b;
                int c;
                int d;
                int e;
           };

si tienes a=8, b=hola, c=6, d=0 y e=89;

en el servidor al recibir la estructura recibe:

        a=8, b=hola6, d=89 y e=*basura, lo que le de la gana poner, un entero
grande seguramente*

Por supuesto que no he comentado todav�a que en el servidor debes tener
memoria reservada para la variable char* donde guardar la informaci�n que
recibas, para que no escriba vete tu a saber donde.
Este funcionamiento anomalo esta requetecomprobado.

>         Si quieres pasar una cadena, envia un char D[256];

Esto no lo he probado porque mis cadenas de caracteres eran char* porque
variaban de tama�o y necesitaba usar memoria din�mica.

un saludo.
Technical Details
Message-ID: <3AF6B106.E6D64723@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> <3AF64BC4.B737246B@mad.tecsidel.es> <9d652a$aoj$1@news.unizar.es>

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 08:10: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 16:28:22 +0200
Organization: Telefonica I+D
Lines: 48
Message-ID: <3AF6B106.E6D64723@mad.tecsidel.es>
References: <3AF3F290.1030009@wanadoo.es> <874ruzsvb6.fsf@relativistic.homeip.net> <3AF64BC4.B737246B@mad.tecsidel.es> <9d652a$aoj$1@news.unizar.es>
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