🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

cosa extraña en C

#2126
From: Ricardo Catalinas Jimenez
Date: Fri, 22 Apr 2005 17:51
88 lines
3714 bytes
El caso es que estaba jugando con un socket pero el programa que hacia  me 
hacia un extra�o.

La funcion en la que sucede todo es:

*********** code *************
int client_mode(void) {
	printf("Hello");
	
	// create a socket
	if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
		perror("socket");
		exit(1);
	}

	// connect
	myaddr.sin_family = AF_INET;
	myaddr.sin_port = htons(port);
	inet_pton(AF_INET, host, &myaddr.sin_addr);
	if (connect(sockfd, (struct sockaddr *)&myaddr, sizeof(myaddr)) == -1) {
		perror("connect");
		exit(1);
	}

	// prepare FD list
	FD_ZERO(&fdlist);
	FD_SET(0, &fdlist);
	FD_SET(sockfd, &fdlist);

	// keep track of the biggest file descriptor
	fdmax = sockfd; // so far, it's this one

	// client's main loop
	for(;;) {
		if (select(fdmax+1, &fdlist, NULL, NULL, NULL) == -1) {
			perror("select");
			exit(1);
		}

		if (FD_ISSET(0, &fdlist)) {
			FD_SET(sockfd, &fdlist);

			scanf("%s", buffer);
			if (send(sockfd, buffer, nbytes, 0) == -1)
				perror("send");


		} else {
			FD_SET(0, &fdlist);
			if ((nbytes = recv(sockfd, buffer, sizeof(buffer), 0)) <= 0) {
				// got error or connection closed by client
				if (nbytes == 0) {
					// connection closed
					printf("%sConnection terminated%s\n", UNDERBLUE, GREEN);
					close(sockfd);
					return 0;
				} else
					perror("recv");
			} else
				printf("%s%s%s", BLUE, buffer, GREEN);
		}
	}

}
**************** end of code ***************



Al principio de la funcion hay un `printf' con un `hello' que deberia 
imprimirse segun entrara en la funcion, no? Pues cuando ejecuto necesito darle 
un par de veces a la tecla enter hasta que se empieza a ejecutar el codigo de 
la funcion. Todo esto sin tocar el flujo de entrada, porque como se ve, solo 
hay un `scanf' pero esta mas abajo. �Alguien tiene alguna idea de porque 
sucede esto?

Otra cosa que me llama la atencion es que cuando algo sale mas y se ejecuta 
alguna llamada a `perror', el mensaje de `perro' se imprime en pantalla antes 
que el de `printf' que es la primera instruccion de la funcion.

Le estaria muy agradecido a todo el que pudiese echarme una mano
Un saludo y gracias.

Por si alguien lo quiere, el codigo entero (es bastante corto) lo e pegado en: 
http://rafb.net/paste/results/sKWMxH26.html
-- 
Ricardo Catalinas Jimenez    Madrid, Spain.
th1nk3r(at)server01(dot)org  http://www.server01.org
GnuPG Key fingerprint = 662C EBF7 9220 0F14 C644  F90B DC3E A163 7F8D CDAE
Technical Details
Message-ID: <QYaae.289504$r4.17831132@news-reader.eresmas.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!fr.ip.ndsoftware.net!feeder.enertel.nl!nntpfeed-01.ops.asmr-01.energis-idc.net!feeder.xsnews.nl!news-out2.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!teleglobe.net!62.81.31.29.MISMATCH!cyclone.auna.com!news-feeder.eresmas.com!news-reader.eresmas.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,41b6c3c07f91e1bd,start
X-Google-Attributes: gidf86c8,public
X-Google-Language: ENGLISH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!fr.ip.ndsoftware.net!feeder.enertel.nl!nntpfeed-01.ops.asmr-01.energis-idc.net!feeder.xsnews.nl!news-out2.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!teleglobe.net!62.81.31.29.MISMATCH!cyclone.auna.com!news-feeder.eresmas.com!news-reader.eresmas.com!not-for-mail
From: Ricardo Catalinas Jimenez <nospam@nospam.com>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050323
X-Accept-Language: en-us, en
MIME-Version: 1.0
Newsgroups: es.comp.os.linux.programacion
Subject: cosa extraña en C
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 88
Message-ID: <QYaae.289504$r4.17831132@news-reader.eresmas.com>
Date: Fri, 22 Apr 2005 19:51:01 +0200
NNTP-Posting-Host: 62.174.242.172
X-Complaints-To: abuse@eresmas.com
X-Trace: news-reader.eresmas.com 1114192816 62.174.242.172 (Fri, 22 Apr 2005 20:00:16 MET DST)
NNTP-Posting-Date: Fri, 22 Apr 2005 20:00:16 MET DST
Organization: eresMas