| 
	
		|  Autor | Tema: Ayuda con sockets en C (bajo windows)  (Leído 4,533 veces) |  
	| 
			| 
					
						| NeoB 
								
								 Desconectado 
								Mensajes: 69
								
								
								
								
								
								   | 
 
Buenas. Esta vez mi duda es como puedo utilizar una URL en una comunicación con sockets tcp/ip en windows en vez de la IP. Tengo este código: #include <windows.h>#include <winsock2.h> //Para sockets#include <ws2tcpip.h> //Para sockets  int main(){	/*************************** DE LOS SOCKETS **************************/	WSADATA wsa; 	int sock; 	struct sockaddr_in direccion;  	WSAStartup(MAKEWORD(2,0),&wsa); 	if((sock=socket(AF_INET,SOCK_STREAM,0))==-1 ) 	{		return -1;	} 	direccion.sin_family=AF_INET; 	direccion.sin_port=htons(5000); 	direccion.sin_addr.s_addr=inet_addr("192.168.1.35");    	if(connect(sock,(struct sockaddr*)&direccion,sizeof(direccion))==-1) 	{		return -1;	}	/***********  ....va pa largo......   ************/ 
 Es decir, cambiar el 192.168.1.35 por algo como "miurl.com". Utilizo mingw.  Gracias.
 
 |  
						| 
								|  |  
								| « Última modificación:  8 Agosto 2012, 17:24 pm por NeoB » |  En línea | 
 
 |  |  |  | 
			| 
					
						| 0xDani 
								       
								
								 Desconectado 
								Mensajes: 1.077
								
								   | 
 
Hay funciones para eso, consulta gethostbyname().
 Saludos.
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
 I code for $$$
 Hago trabajos en C/C++
 Contactar por PM
 |  |  |  | 
			| 
					
						| NeoB 
								
								 Desconectado 
								Mensajes: 69
								
								
								
								
								
								   | 
 
Ya había encontrado la función pero había entendido mal y creía que había que hacerlo con una librería externa. Gracias. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| NeoB 
								
								 Desconectado 
								Mensajes: 69
								
								
								
								
								
								   | 
 
Una última pregunta...El servidor que utilizo corre en Linux y al intentar conectarlo no va (no pasa nada en el servidor y el cliente se cierra como si no hubiese servidor). En cambio, se el servidor es windows si funciona.
 ¿Hay algún problema corriente entre las conexiones de Winsock y los sockets de linux o es otro error? (He buscado en google pero los casos que vienen están en Java o hablan de portabilidad...)
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| 0xDani 
								       
								
								 Desconectado 
								Mensajes: 1.077
								
								   | 
 
Quiza tenga que ver con el orden en el que los bytes se almacenan en el servidor Linux. ¿Tienes el codigo que usas en Linux?
 Saludos.
 |  
						| 
								|  |  
								|  |  En línea | 
 
 I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
 I code for $$$
 Hago trabajos en C/C++
 Contactar por PM
 |  |  |  | 
			| 
					
						| NeoB 
								
								 Desconectado 
								Mensajes: 69
								
								
								
								
								
								   | 
 
He de advertir que el código del servidor es "improvisado" de una web para compilarlo rápido y probar el cliente por lo que no tiene ni salida de los bucles ni nada, solo para ver si se conectan: #include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h> int main(){ int server_sockfd, client_sockfd;int server_len, client_len;struct sockaddr_in server_address;struct sockaddr_in client_address;char c[1024];  server_sockfd = socket(AF_INET, SOCK_STREAM, 0);  server_address.sin_family = AF_INET;server_address.sin_addr.s_addr = inet_addr("127.0.0.1");server_address.sin_port = htons(5000);server_len = sizeof(server_address);bind(server_sockfd, (struct sockaddr *)&server_address, server_len);listen(server_sockfd, 5); client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len); printf("Cliente conectado\n");	for(;;)	{		read(client_sockfd, c, 1024);	} return 0; } 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| 0xDani 
								       
								
								 Desconectado 
								Mensajes: 1.077
								
								   | 
 
Pues no se, quiza tenga que ver con que lo configuras con IP de localhost.
 Saludos.
 |  
						| 
								|  |  
								|  |  En línea | 
 
 I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
 I code for $$$
 Hago trabajos en C/C++
 Contactar por PM
 |  |  |  | 
			| 
					
						| NeoB 
								
								 Desconectado 
								Mensajes: 69
								
								
								
								
								
								   | 
 
Biennnnnnnn!!!!! Ya funciona!!! La verdad es que no entendía muy bien para que esa línea en el servidor (ahora sí). Al final era cambiar el  inet_addr("127.0.0.1")
  por  INADDR_ANY
  y ya acepta la conexión. Muchas gracias! |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
   |