Thread View: es.comp.os.linux.programacion
6 messages
6 total messages
Started by fran
Thu, 27 Jul 2006 03:19
socket en red no me funciona
Author: fran
Date: Thu, 27 Jul 2006 03:19
Date: Thu, 27 Jul 2006 03:19
18 lines
2105 bytes
2105 bytes
Hola a todos, Estoy comenzando a trabajar con sockets TCP sobre linux en C, los cuales (cliente y servidor) me funcionan perfectamente dentro de mi pc, el problema esta al colocar el servidor en un computador y el cliente en otro. No logro realizar la comunicación. Cuando dejo mi servidor TCP corriendo y realiza netstat -ta, puedo ver que el puerto esta abierto, pero mi cliente (que esta en otro pc con linux dentro de mi intranet) no se conecta a este servidor, en cambio si a mi cliente le cambio el puerto a 22 para ver si se conecta con otros servidor el servidor ssh si le contesta. Me pueden decir que estoy haciendo mal?, debo desactivar algo?, o habilitar algun puerto?. Saludos y gracias. P.D.: no inclui ningun codigo, porque lo que he hecho es igual a los ejemplo que he encontrado en la red, por ejemplo en http://daniellerch.com/sources/examples/sockets.html (claro que utilizo los ip de mis computadores en lugar de localhost).
Re: socket en red no me funciona
Author: Pascal Bourguignon
Date: Thu, 27 Jul 2006 03:40
Date: Thu, 27 Jul 2006 03:40
28 lines
2586 bytes
2586 bytes
"fran" <prubtest8@hotmail.com> writes: > Hola a todos, > > Estoy comenzando a trabajar con sockets TCP sobre linux en C, los > cuales (cliente y servidor) me funcionan perfectamente dentro de mi pc, > el problema esta al colocar el servidor en un computador y el cliente > en otro. No logro realizar la comunicaci�n. Cuando dejo mi servidor > TCP corriendo y realiza netstat -ta, puedo ver que el puerto esta > abierto, pero mi cliente (que esta en otro pc con linux dentro de mi > intranet) no se conecta a este servidor, en cambio si a mi cliente le > cambio el puerto a 22 para ver si se conecta con otros servidor el > servidor ssh si le contesta. > Me pueden decir que estoy haciendo mal?, debo desactivar algo?, o > habilitar algun puerto?. > Saludos y gracias. > P.D.: no inclui ningun codigo, porque lo que he hecho es igual a los > ejemplo que he encontrado en la red, por ejemplo en > http://daniellerch.com/sources/examples/sockets.html (claro que utilizo > los ip de mis computadores en lugar de localhost). 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!"
Re: socket en red no me funciona
Author: heltena
Date: Thu, 27 Jul 2006 07:45
Date: Thu, 27 Jul 2006 07:45
23 lines
2384 bytes
2384 bytes
¿el puerto es menor de 1024 y el servidor no lo ejecutas como root? fran ha escrito: > Hola a todos, > > Estoy comenzando a trabajar con sockets TCP sobre linux en C, los > cuales (cliente y servidor) me funcionan perfectamente dentro de mi pc, > el problema esta al colocar el servidor en un computador y el cliente > en otro. No logro realizar la comunicación. Cuando dejo mi servidor > TCP corriendo y realiza netstat -ta, puedo ver que el puerto esta > abierto, pero mi cliente (que esta en otro pc con linux dentro de mi > intranet) no se conecta a este servidor, en cambio si a mi cliente le > cambio el puerto a 22 para ver si se conecta con otros servidor el > servidor ssh si le contesta. > Me pueden decir que estoy haciendo mal?, debo desactivar algo?, o > habilitar algun puerto?. > Saludos y gracias. > P.D.: no inclui ningun codigo, porque lo que he hecho es igual a los > ejemplo que he encontrado en la red, por ejemplo en > http://daniellerch.com/sources/examples/sockets.html (claro que utilizo > los ip de mis computadores en lugar de localhost).
Re: socket en red no me funciona
Author: 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);
}
}
Re: socket en red no me funciona
Author: Oscar Garcia
Date: Thu, 27 Jul 2006 14:15
Date: Thu, 27 Jul 2006 14:15
44 lines
2730 bytes
2730 bytes
On 26 Jul 2006 20:19:34 -0700, "fran" <prubtest8@hotmail.com> wrote: >Estoy comenzando a trabajar con sockets TCP sobre linux en C, los >cuales (cliente y servidor) me funcionan perfectamente dentro de mi pc, >el problema esta al colocar el servidor en un computador y el cliente >en otro. No logro realizar la comunicaci�n. �Qu� puertos usas en una y otra aplicaci�n? �Tienes firewall en uno u otro equipo? �Has probado a desactivarlos? > Cuando dejo mi servidor >TCP corriendo y realiza netstat -ta, puedo ver que el puerto esta >abierto, pero mi cliente (que esta en otro pc con linux dentro de mi >intranet) no se conecta a este servidor, en cambio si a mi cliente le >cambio el puerto a 22 para ver si se conecta con otros servidor el >servidor ssh si le contesta. �Est�s seguro que es tu aplicaci�n la que tiene abierto el puerto y no otra distinta? >Me pueden decir que estoy haciendo mal?, debo desactivar algo?, o >habilitar algun puerto?. Veamos.. revisemos el c�digo.. ahh! si no has mandado c�digo.. entonces no s� ni el puerto que usas, ni el protocolo.. :) >Saludos y gracias. De nada. >P.D.: no inclui ningun codigo, porque lo que he hecho es igual a los >ejemplo que he encontrado en la red, por ejemplo en >http://daniellerch.com/sources/examples/sockets.html (claro que utilizo >los ip de mis computadores en lugar de localhost). P.D.: He hecho un programa que funciona correctamente, no te env�o el c�digo porque supongo que no es necesario, es igual al ejemplo de http://daniellerch.com/sources/examples/sockets.html :) Saludos. -- �scar Javier Garc�a Baudet LinaresDigital http://redstar.linaresdigital.com/
Re: socket en red no me funciona
Author: Oscar Garcia
Date: Thu, 27 Jul 2006 16:41
Date: Thu, 27 Jul 2006 16:41
29 lines
1972 bytes
1972 bytes
El 27 Jul 2006 07:11:50 -0700, "fran" <prubtest8@hotmail.com> escribi�: > server.sin_addr.s_addr = ((struct in_addr >*)(server_host_name->h_addr))->s_addr; Me funciona perfectamente si comento esta l�nea (por la IP que es distinta en mi caso). Supongo que si cambio la IP deber�a funcionar perfectamente, pero ah� no veo el problema (se supone que est� bien). Viendo el c�digo yo descartar�a un error de la aplicaci�n y pensar�a en que tienes el firewall que te impide recibir conexiones al puerto 12340. Te recomiendo que hagas esto antes de ejecutar la aplicaci�n: iptables -t filter -F INPUT Con eso eliminar�s toda regla de filtrado que tubieras configurada. Prueba de nuevo despu�s de hacer esto. Un saludo. -- �scar Javier Garc�a Baudet LinaresDigital http://redstar.linaresdigital.com/
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads