J'essaie d'obtenir le code HTML de cette page http://pastebin.com/raw/7y7MWssc en utilisant C. Jusqu'à présent, j'essaie de se connecter à pastebin en utilisant les sockets & port 80, puis d'utiliser une requête HTTP pour obtenir le code HTML sur cette page pastebin.langage C, obtenir la source HTML
Je sais ce que j'ai à ce jour est probablement loin, mais voici:
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int main()
{
/*Define socket variables */
char host[1024] = "pastebin.com";
char url[1024] = "/raw/7y7MWssc";
char request[2000];
struct hostent *server;
struct sockaddr_in serverAddr;
int portno = 80;
printf("Trying to get source of pastebin.com/raw/7y7MWssc ...\n");
/* Create socket */
int tcpSocket = socket(AF_INET, SOCK_STREAM, 0);
if(tcpSocket < 0) {
printf("ERROR opening socket\n");
} else {
printf("Socket opened successfully.\n");
}
server = gethostbyname(host);
serverAddr.sin_port = htons(portno);
if(connect(tcpSocket, (struct sockaddr *) &serverAddr, sizeof(serverAddr)) < 0) {
printf("Can't connect\n");
} else {
printf("Connected successfully\n");
}
bzero(request, 2000);
sprintf(request, "Get %s HTTP/1.1\r\n Host: %s\r\n \r\n \r\n", url, host);
printf("\n%s", request);
if(send(tcpSocket, request, strlen(request), 0) < 0) {
printf("Error with send()");
} else {
printf("Successfully sent html fetch request");
}
printf("test\n");
}
Le code ci-dessus était logique d'un certain point, et maintenant je suis confus. Comment est-ce que je ferais ceci obtenir la source de Web de http://pastebin.com/raw/7y7MWssc?
1) supprimer les espaces supplémentaires au début des lignes à la demande, 2) le changement arriver à obtenir , 3) recevoir la réponse et l'imprimer – immibis
@immibis fait, mais il y a toujours un problème après que j'imprime la demande sur la ligne 38, comme la dernière ligne où il imprime "test" n'est jamais exécutée – BotHam
Il est "jamais exécuté"? Donc, votre programme est ... sortant avec une erreur? Pendaison? Si c'est suspendu, sur quelle ligne se bloque-t-il? S'il y a une erreur, qu'est-ce que c'est? – larsks