Autor
|
Tema: Ayuda con sockets en C (bajo windows) (Leído 4,083 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
|
|
|
|
|
|