I am trying to create a simple web browser, but I have not found any tutorials. I have read a socket tutorial (but it is not on creating a web browser), and the code I give below is what I have come with. I do not know why it does not work at all. It kind of stops at the receive part. I used a packet sniffer and saw that I was sending some data to the site address, but I am not getting the webpage HTML code back. Can somebody tell me what I am doing wrong?
Code:#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <winsock.h> WSADATA wsaData; char buf[100]; int socketsrc, bytesRecv, bytesSent; struct sockaddr_in dest_addr; struct hostent *h; char *msg = "GET / HTTP/1.1"; int main(int argc, char *argv[]) { if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) { fprintf(stderr, "WSAStartup failed.\n"); exit(1); } if ((socketsrc = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } printf("\nsuccess: socket"); if (argc != 2) { // error check the command line fprintf(stderr,"usage: getip address\n"); exit(1); } if ((h=gethostbyname(argv[1])) == NULL) { // get the host info printf("\nNo Host for %s", argv[1]); exit(1); } printf("\nsuccess: hostname"); dest_addr.sin_family = AF_INET; // host byte order dest_addr.sin_port = htons(80); // short, network byte order dest_addr.sin_addr.s_addr = inet_addr("216.239.57.99"); memset(&(dest_addr.sin_zero), 0, 8); // zero the rest of the struct if (connect(socketsrc, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)) == -1) { perror("connect"); exit(1); } printf("\nsuccess: connect"); bytesSent = send(socketsrc, msg, strlen(msg), 0); printf( "\nBytes Sent: %d", bytesSent ); //and this is where I think the program just stops while((bytesRecv = recv( socketsrc, buf, 99, 0 )) != -1 ) { if ( bytesRecv == 0) { printf( "\nConnection Closed."); break; } printf( "\nBytes Recv: %d", bytesRecv ); } printf("\nsuccess: recieve"); closesocket(socketsrc); WSACleanup(); return 0; }



LinkBack URL
About LinkBacks



Hope changing your HTTP request works! Also, the strings you recv from your socket are not null-terminated (don't want 00 lying about image data). If you wish to print them, you might for instance:
Well like I can tell what the second line does, which is display the string, but I do not know what 0x00 means, and not even how to get the string from the recv().