Article View: es.comp.os.linux.programacion
Article #16770Re: Problemillas con los sockets
From: Paco Orts
Date: Tue, 21 Mar 2000 00:00
Date: Tue, 21 Mar 2000 00:00
107 lines
5472 bytes
5472 bytes
Bueno hombre, unas aclaraciones. He puesto esas l�neas de c�digo como me has sugerido
(para que veas que te hago caso ehhhh ;). Bueno, casi, en vez de buffer[1] = 0 lo he
cambiado por indirecci�n (no os gustan tambi�n los punteros .... |))))))
Bueno, pues depurando me ha dado por ir haciendo un print de buffer cada vez que le�a,
al hacerlo desde el cliente que yo habia dise�ado me salia tal como yo cre�a. Pero,
cu�l fue mi sorpresa cuando al hacerlo desde el telnet antes de llegar a leer '\n' le�a
'\r' (me puede dar alguien el nombre y el e-mail del que invent� el protocolo telnet
que le voy a dar un saludo muy personal). Pos nada, he comprobado adem�s de que termine
como '\n' como "\r\n". Si se os ocurre alguna otra cosilla para poder filtrarlo mejor
(tal vez podr�a en la funci�n leer l�nea saltarme los caracteres '\r' ...). Me queda
probar a poner el cliente en el programa que utilizaba bajo gtk para ver si me sigue
funcionando. Espero probarlo esta tarde y ya os dire.
Me gustar�a, si tambi�n existe m�s gente que le interese que creasemos un grupo de
discusi�n exclusivamente de programaci�n de comunicaciones bajo linux (no solo el tema
de sockets, tambi�n con puertos serie y pararelo, infrarrojos y dem�s, si os interesa
mandarme un correo privado a ver si puedo hacer que en nuestro servidor privado pongan
algo o ya nos meteremos en alg�n otro).
Thanks a todos.
batsman wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
>
> In article <38D20C42.93C42E02@mtgsystem.com>, Paco Orts wrote:
> >
> >Bueno, este es el c�digo de la funci�n que utilizo para leer todo lo que me manden
> >hasta que alcanze un salto de linea. netSystem.h es una cabecera con la
> >declaraci�n de la funci�n leerLinea.
>
> Bueno, este c�digo no est� probado, pero deber�a rular, apenas le he hecho 4
> cambios
> >
> >#include <netSystem.h>
> >#include <string.h>
> >#include <stdio.h>
> >#include <stdlib.h>
> >#include <unistd.h>
> >
> >///////////////////////////////////////////////////////
> >// Funci�n encargada de leer un m�ximo de longBuf
> >// caracteres del socket sfd y guardarlos en buf.
> >// Termina tambi�n cuando se encuentre un salto de
> >// l�nea.
> >// Devuelve el n�mero de caracteres leidos.
> >///////////////////////////////////////////////////////
> >int leerLinea (int sfd, char *buf, int longBuf)
> >{
> char buffer[2];
> > int bytesRestantes = longBuf;
> > int bytesRecibidos;
> >
> buf[0] = '\0';
> buffer[1] = '\0'; /* para delimitar la cadena */
> > while (bytesRestantes > 0)
> > {
> /*buffer[0] = ' '; no vale para nada, read machaca el buffer */
> > bytesRecibidos = read (sfd, buffer, 1);
> > if (bytesRecibidos == -1)
> > {
> > printf ("ERROR. Al recibir desde el servidor");
> > return -1;
> > }
> > bytesRestantes -= bytesRecibidos;
> > strcat(buf, buffer); //bytesRecibidos;
> > if (buffer[0] == '\n') break;
> > }
> return (longBuf - bytesRestantes); /* �por qu� no return strlen(buf) ? */
> >}
> >
> >Y por si tambi�n es lo que quieres, donde llamo a esta funci�n es:
> >
> > recepcion = leerLinea (hdlNetUse, cadena, 100);
> > if (recepcion == -1)
> > printf ("Error en la recepci�n desde el servidor");
> > if (!strcmp (cadena, "COMMUNICATION ACCEPTED\n"))
> > {
> >
> >aqu� si hago un telnet nunca me pasa del if.
>
> - --
> _ _
> | |__ __ _| |_ ___ _ __ ___ __ _ _ __
> | '_ \ / _` | __/ __| '_ ` _ \ / _` | '_ \
> | |_) | (_| | |_\__ \ | | | | | (_| | | | |
> |_.__/ \__,_|\__|___/_| |_| |_|\__,_|_| |_|
> ________________________________________________________________
> |Visit | http://www.geocities.com/SiliconValley/Vista/2075 |
> |Linux | http://www.geocities.com/SiliconValley/Vista/4289 |
> ----------------------------------------------------------------
> Real email: batsman dot geo at yahoo dot com
>
> -----BEGIN PGP SIGNATURE-----
> Version: 2.6.3ia
> Charset: noconv
> Comment: Public key via email: send mail with Subject: [PGPKEY]
>
> iQEVAwUBONZ2hr0Y27yr0iefAQEbAAf+JExEHedXaO6+Timjyh9khBeXpXgiYpoI
> Lg4EcR2evLayRKhg0V5MWTZ6GUVCIu00eR2UCMn7AL38rJ7dO+2tvyCAcgdjlOpi
> OcZgwN1yJSvmgGabgs0QfjtOqfN0nVPboxhPP04j86EAYkJiQII6H9SIjSY8+jMV
> SCdiVe4KocRANfeg9096uS/Z+fMHsFI9P2Fw0nmgDXhcVQGwfJdmGrxpq2bcvLsA
> /YCXPsoZ7RHgZ11TEBEdElT8BEX6GHa6zmiPjfDEhJZkvutYKr82Pe4xouvBxKlC
> IC0HtafBgTqEQzcDI3JCZrdemVLlYfD7OAzDxu7CuSMBLEdV0O7sIw==
> =bnwT
> -----END PGP SIGNATURE-----
Technical Details
Message-ID:
<38D7721C.68C0AB36@mtgsystem.com>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<38CFDF82.BD9CA6A3@mtgsystem.com> <38D0A222.8EA901FF@NOSPAM.inicia.es> <38D111BE.7DA15CCE@mtgsystem.com> <8asrra$i5d$3@simancas.uva.es> <38D20C42.93C42E02@mtgsystem.com> <bqs5b8.1h.ln@simpsons4ever>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,58a23ab56d6ca5b2 X-Google-Attributes: gidf86c8,public From: Paco Orts <webmaster@mtgsystem.com> Subject: Re: Problemillas con los sockets Date: 2000/03/21 Message-ID: <38D7721C.68C0AB36@mtgsystem.com> X-Deja-AN: 600380332 Content-Transfer-Encoding: 8bit References: <38CFDF82.BD9CA6A3@mtgsystem.com> <38D0A222.8EA901FF@NOSPAM.inicia.es> <38D111BE.7DA15CCE@mtgsystem.com> <8asrra$i5d$3@simancas.uva.es> <38D20C42.93C42E02@mtgsystem.com> <bqs5b8.1h.ln@simpsons4ever> X-Accept-Language: en Content-Type: text/plain; charset=iso-8859-1 X-Trace: 21 Mar 2000 13:58:50 +0100, 195.5.69.214 Organization: Arrakis Servicios y Comunicaciones SLU MIME-Version: 1.0 Newsgroups: es.comp.os.linux.programacion