Article View: es.comp.os.linux.programacion
Article #907Re: socket en red no me funciona
From: fran
Date: Thu, 27 Jul 2006 14:11
Date: Thu, 27 Jul 2006 14:11
110 lines
4897 bytes
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-mailReferences:
<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