Stack Overflow en español Asked by Frijolito on December 24, 2020
Mi problema es simple ya tenia escrita una funcion que para hacer una petición get a un servidor mio, pero la borre y la volvi a escribir la cosa es que ahora me manda un segfault en esta parte
memset(&server_addr, 0, sizeof(server_addr));
server_addr->sin_family = AF_INET;
server_addr->sin_port = htons(80);
memcpy(&server_addr->sin_addr.s_addr, host->h_addr, host->h_length);
especificamente en la parte del memcpy
y no se porque, en algunos foros vi que se deberia escribir esa parte de esta forma
memcpy(&server_addr.sin_addr.s_addr, host->h_addr, host->h_length);
cambiando el &server_addr->sin_addr.s_addr
por el &server.sin_addr.s_addr
, la verdad no se cual es el problema seguramente algo muy simple pero de todas formas no logro dar con el error
les dejo el código completo de todas formar
char*Requests::get(const char *url) { // url = localhost/path/test_path
char *message = createGetPayload(url);
char *response = (char *)malloc(sizeof(char)*8192); // Default size;
int sock;
struct hostent *host;
struct sockaddr_in *server_addr;
host = gethostbyname(getHost(url));
if (host == NULL) {
perror("Error: host not found n");
exit(1);
}
memset(&server_addr, 0, sizeof(server_addr));
server_addr->sin_family = AF_INET;
server_addr->sin_port = htons(80);
memcpy(&server_addr->sin_addr.s_addr, host->h_addr, host->h_length);
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("Error: could not create socketn");
exit(1);
}
if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
perror("Error: could not connect with the servern");
exit(1);
}
send(sock, message, strlen(message), 0);
recv(sock, response, strlen(response), 0);
return response;
}
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP