Autor
|
Tema: ayuda con sockets (Leído 2,402 veces)
|
ankora45
Desconectado
Mensajes: 52
|
hola veran hice un programa que te pide la web y un puerto y te saca por pantalla la ip(v4) del servidor donde este alojada la pagina sin embargo cuando lo inicio me pide la web y el puerto hasta ahi todo bien pero despues me sale el siguiente error "core dump" el compilador ni me da problemas ni alertas ademas trabajo en ubuntu ayudenme plz #include <sys/socket.h> #include <unistd.h> #include <fcntl.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <stdlib.h> #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int sockfd = socket(AF_INET, SOCK_STREAM, 0); int stat = fcntl(sockfd, F_GETFL, 0); char web[20]; int puertosd; printf("Escriba el nombre de la web (www.nombre.extension)\n"); fgets(web, 20, stdin ); printf("Escriba el puero\n"); scanf("%d",&puertosd); fcntl(sockfd, F_SETFL, stat | O_NONBLOCK); struct hostent *host = gethostbyname(web); struct sockaddr_in sock; sock.sin_family = AF_INET; sock.sin_port = htons(puertosd); sock.sin_addr.s_addr = inet_addr(host->h_addr); connect(sockfd, (struct sockaddr*) &sock, sizeof(sock)); printf("Nombre: %s\n", host->h_name); printf("Direccion IP(v4) del servidor: %s\n", inet_ntoa(*((struct in_addr *)host->h_addr))); close(sockfd); return 0; }
|
|
|
En línea
|
Hay dos cosas infinitas en este mundo, el universo y la estupidez humana, y de la primera no estoy muy seguro
|
|
|
soyloqbuskas
Desconectado
Mensajes: 219
¡El conocimiento es de todos!
|
¡Buenas ankora45! El problema lo tienes en esta linea: sock.sin_addr.s_addr = inet_addr(host->h_addr);
Mira este enlace que hablan sobre tu problema http://foro.elhacker.net/programacion_cc/asignar_ip_a_una_sockaddrin-t217251.0.htmlUn saludo.
|
|
|
En línea
|
"Si tienes 1 manzana y yo tengo otra manzana... y las intercambiamos, ambos seguiremos teniendo 1 manzana. Pero...si tu tienes 1 idea y yo tengo otra idea... y las intercambiamos, ambos tendremos 2 ideas."
George Bernard Shaw
|
|
|
ankora45
Desconectado
Mensajes: 52
|
Gracias por la ayuda pero sigo sin entenderlo ya que corrijo la linea pero me sigue saltando incluso no me deja compilar
|
|
|
En línea
|
Hay dos cosas infinitas en este mundo, el universo y la estupidez humana, y de la primera no estoy muy seguro
|
|
|
soyloqbuskas
Desconectado
Mensajes: 219
¡El conocimiento es de todos!
|
Bueno creo que ya he dado con el problema...
En realidad esta en la funcion htons(). La funcion htons(u_16) recibe un numero de 16 bits, pero tu le estas pasando un int puertosd que es de 32 bits, por eso te da fallo de segmentacion. Para solucionarlo debes declararte el puertosd como unsigned short puertosd. Y luego ten cuidado con el scanf(puertosd) porque ya no puedes usar %d para leer creo que debes hacerlo asi scanf("%hd", &puertosd);
Un saludo.
|
|
|
En línea
|
"Si tienes 1 manzana y yo tengo otra manzana... y las intercambiamos, ambos seguiremos teniendo 1 manzana. Pero...si tu tienes 1 idea y yo tengo otra idea... y las intercambiamos, ambos tendremos 2 ideas."
George Bernard Shaw
|
|
|
ankora45
Desconectado
Mensajes: 52
|
Me sigue saltando el error segment faul (core dumped) #include <sys/socket.h> #include <unistd.h> #include <fcntl.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <stdlib.h> #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int sockfd = socket(AF_INET, SOCK_STREAM, 0); int stat = fcntl(sockfd, F_GETFL, 0); char web[20]; unsigned short int puertosd; printf("Escriba el nombre de la web (www.nombre.extension)\n"); fgets(web, 20, stdin ); printf("Escriba el puerto\n"); scanf("%hd",&puertosd); fcntl(sockfd, F_SETFL, stat | O_NONBLOCK); struct hostent *host = gethostbyname(web); struct sockaddr_in sock; sock.sin_family = AF_INET; sock.sin_port = htons(puertosd); sock.sin_addr.s_addr = inet_addr(host->h_addr); connect(sockfd, (struct sockaddr*) &sock, sizeof(sock)); printf("Nombre: %s\n", host->h_name); printf("Direccion IP(v4) del servidor: %s\n", inet_ntoa(*((struct in_addr *)host->h_addr))); close(sockfd); return 0; }
|
|
|
En línea
|
Hay dos cosas infinitas en este mundo, el universo y la estupidez humana, y de la primera no estoy muy seguro
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con sockets
PHP
|
[KMT]
|
2
|
1,952
|
30 Abril 2007, 02:10 am
por дٳŦ٭
|
|
|
Ayuda con sockets
.NET (C#, VB.NET, ASP)
|
nik00
|
3
|
3,094
|
11 Marzo 2009, 12:08 pm
por Krackwar ™
|
|
|
Ayuda Sockets en C
Programación C/C++
|
sinsombra_666
|
2
|
2,752
|
25 Septiembre 2010, 14:27 pm
por sinsombra_666
|
|
|
Ayuda con Sockets
Programación Visual Basic
|
Elemental Code
|
2
|
2,081
|
25 Enero 2011, 21:06 pm
por ::: Devil :::
|
|
|
Ayuda con sockets
Java
|
delirio
|
0
|
1,490
|
24 Agosto 2011, 05:15 am
por delirio
|
|