🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: socket en red no me funciona

#907
From: fran
Date: Thu, 27 Jul 2006 14:11
110 lines
4897 bytes
Pascal Bourguignon ha escrito:


> Vale.  La solución es simplisíma.  No incluyo ningun codigo, porque es
> igual a los ejemplos que se encuentran en la red.
>
> --
> __Pascal Bourguignon__                     http://www.informatimago.com/
>
> "A TRUE Klingon warrior does not comment his code!"

Este es el codigo de mi servidor.... lo hago correr como root y he
usado puertos superiores al 1024, en este caso el 12340.
Saludos y gracias

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

#define PORT 12340 /*Puerto que utilizaremos*/
#define BACKLOG 10 /*numero maximo de conecciones permitidas*/

/***************************************************************************************/
/*pruea para definir mi propio ip, esto lo agregue porque pense que
INADDR_ANY podria
ser el problema, aunque es muy poco probable*/
char * mi_name = "192.168.1.192";
/***************************************************************************************/
main()
{
	int sockDes,sockDesC; /*Descriptores del socket*/
	/*para informacion de las direcciones del serivodr y del cliente*/
	struct sockaddr_in server;
/***************************************************************************************/
	/*pruea para definir mi propio ip*/
	struct hostent *server_host_name;
/***************************************************************************************/
	struct sockaddr_in client;
	int sin_size;
	char comando[5]; /*bufer para almacenar el comando envia desde el
cliente*/
	char * str = "traza"; /*traza a enviar*/
	/*Creamos el socket*/
	sockDes = socket(AF_INET, SOCK_STREAM, 0);
/***************************************************************************************/
	/*pruea para definir mi propio ip*/
	if((server_host_name = gethostbyname(mi_name)) == 0){
		perror("Error al resolver el host local\n");
		exit(1);
	}
/***************************************************************************************/
	if(sockDes == -1){
		printf("Error al crear el socket\n");
		exit(-1);
	}
	/*llenamos los datos del servidor, son 4 campos de la estructura
sockaddr_in*/
	server.sin_family = AF_INET;
	server.sin_port = htons(PORT);
	server.sin_addr.s_addr = INADDR_ANY;
	server.sin_addr.s_addr = ((struct in_addr
*)(server_host_name->h_addr))->s_addr;
	bzero(server.sin_zero,8);
	/*llamamos a bind()*/
	if(bind(sockDes,(struct sockaddr *)&server,sizeof(server))== -1){
		printf("Error al llamar bind()\n");
		exit(-1);
	}
	/*esperamos coneccion,maximo 10 conecciones*/
	if(listen(sockDes, BACKLOG) == -1){
		printf("Error en listen()\n");
		exit(-1);
	}
	/*esperamos conecciones*/
	printf("Esperando conecciones...\n");
	/*Realizamos la accion correpondiente cuenado alguien se conecta*/
	while(1){
		sin_size = sizeof(struct sockaddr_in);
		sockDesC = accept(sockDes, (struct sockaddr *)&client, &sin_size);
		if(sockDesC == -1){
			printf("Error aceptar socket\n");
			exit(-1);
		}
		/*muestra el ip del que se conecto*/
		printf("Se obtuvo una conexión desde %s\n",
inet_ntoa(client.sin_addr) );
		if(recv(sockDesC, comando, 5, 0) == -1){
			printf("fallo en recv()\n");
			exit(-1);
		}
		printf("El comando recibido es: %s\n",comando);

		printf("La respuesta es: %s\n",str);
		/*if(comando == "envia"){*/
			if(send(sockDesC, str, strlen(str),0) == -1){
				printf("Error al enviar\n");
				exit(-1);
			}
		/*}*/
		close(sockDesC);
	}
}
Technical Details
Message-ID: <1154009510.569221.137280@i3g2000cwc.googlegroups.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!i3g2000cwc.googlegroups.com!not-for-mail
References: <1153970374.343293.81530@m73g2000cwd.googlegroups.com> <87slknww8k.fsf@thalassa.informatimago.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,43429d7633b931ce
X-Google-Attributes: gidf86c8,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!i3g2000cwc.googlegroups.com!not-for-mail
From: "fran" <prubtest8@hotmail.com>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: socket en red no me funciona
Date: 27 Jul 2006 07:11:50 -0700
Organization: http://groups.google.com
Lines: 111
Message-ID: <1154009510.569221.137280@i3g2000cwc.googlegroups.com>
References: <1153970374.343293.81530@m73g2000cwd.googlegroups.com>
   <87slknww8k.fsf@thalassa.informatimago.com>
NNTP-Posting-Host: 200.72.204.106
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1154009515 23769 127.0.0.1 (27 Jul 2006 14:11:55 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Thu, 27 Jul 2006 14:11:55 +0000 (UTC)
In-Reply-To: <87slknww8k.fsf@thalassa.informatimago.com>
User-Agent: G2/0.2
X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.0.3) Gecko/20060425 SUSE/1.5.0.3-7 Firefox/1.5.0.3,gzip(gfe),gzip(gfe)
Complaints-To: groups-abuse@google.com
Injection-Info: i3g2000cwc.googlegroups.com; posting-host=200.72.204.106;
   posting-account=ckWu0Q0AAACBJsMbvc-gLLbMY8N2Q1dZ