Click here to Skip to main content
15,796,456 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
PinnedHOW TO ANSWER A QUESTION PinPopular
Chris Maunder12-Jul-09 23:37
cofounderChris Maunder12-Jul-09 23:37 
PinnedHOW TO ASK A QUESTION PinPopular
Chris Maunder12-Feb-09 18:19
cofounderChris Maunder12-Feb-09 18:19 
Questiondownload a web page Pin
mike741117hrs 35mins ago
mike741117hrs 35mins ago 
I created some code to download a web page:

#define _CRT_SECURE_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iostream>

#pragma comment(lib, "ws2_32.lib")

int main(int argc, char* argv[]) {

    WSADATA wsaData;
    int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (iResult != 0) {
        std::cerr << "WSAStartup failed: " << iResult << std::endl;
        return 1;
    }

    const char* hostname = "www.example.com";
    const char* path = "/";
    struct hostent* host = gethostbyname(hostname);
    struct sockaddr_in server_address;
    int socket_fd, bytes_received;
    char buffer[1024];

    if (host == NULL) {
        fprintf(stderr, "Error: Could not resolve hostname.\n");
        int error_num = WSAGetLastError();
        exit(1);
    }

    socket_fd = socket(AF_INET, SOCK_STREAM, 0);
    if (socket_fd < 0) {
        perror("Error: Could not create socket.\n");
        exit(1);
    }

    memset(&server_address, 0, sizeof(server_address));
    server_address.sin_family = AF_INET;
    server_address.sin_port = htons(80);
    memcpy(&server_address.sin_addr, host->h_addr_list[0], host->h_length);

    if (connect(socket_fd, (struct sockaddr*)&server_address, sizeof(server_address)) < 0) {
        perror("Error: Could not connect to server.\n");
        exit(1);
    }

    char* request = (char *)malloc(strlen(path) + strlen(hostname) + 16);
    sprintf(request, "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n", path, hostname);
    send(socket_fd, request, strlen(request), 0);

    while ((bytes_received = recv(socket_fd, buffer, sizeof(buffer), 0)) > 0) {
        fwrite(buffer, 1, bytes_received, stdout);
    }

    free(request);
    closesocket(socket_fd);

    return 0;
}


It prints the web page out, but then it seems to get stuck in the recv function.

Anyone know what's wrong?

Thanks.
AnswerRe: download a web page Pin
Mircea Neacsu17hrs 5mins ago
Mircea Neacsu17hrs 5mins ago 
GeneralRe: download a web page Pin
mike74118hrs 37mins ago
mike74118hrs 37mins ago 
GeneralRe: download a web page Pin
Mircea Neacsu7hrs 47mins ago
Mircea Neacsu7hrs 47mins ago 
AnswerRe: download a web page Pin
jschell15hrs 13mins ago
jschell15hrs 13mins ago 
AnswerRe: download a web page Pin
Gerry Schmitz14hrs 37mins ago
mveGerry Schmitz14hrs 37mins ago 
Questioncopying a file in C++17 Pin
mike74115-Dec-23 22:36
mike74115-Dec-23 22:36 
AnswerRe: copying a file in C++17 Pin
Richard MacCutchan23hrs 58mins ago
mveRichard MacCutchan23hrs 58mins ago 
AnswerRe: copying a file in C++17 Pin
jschell15hrs 1 min ago
jschell15hrs 1 min ago 
Questionprintf without stdio.h Pin
mike74115-Dec-23 6:21
mike74115-Dec-23 6:21 
AnswerRe: printf without stdio.h Pin
Mircea Neacsu5-Dec-23 6:31
Mircea Neacsu5-Dec-23 6:31 
GeneralRe: printf without stdio.h Pin
mike74115-Dec-23 17:23
mike74115-Dec-23 17:23 
GeneralRe: printf without stdio.h Pin
Mircea Neacsu5-Dec-23 17:42
Mircea Neacsu5-Dec-23 17:42 
AnswerRe: printf without stdio.h Pin
Victor Nijegorodov5-Dec-23 6:32
Victor Nijegorodov5-Dec-23 6:32 
AnswerRe: printf without stdio.h Pin
k50545-Dec-23 7:02
mvek50545-Dec-23 7:02 
GeneralRe: printf without stdio.h Pin
jschell14hrs 58mins ago
jschell14hrs 58mins ago 
Questioncopying a file Pin
mike74115-Dec-23 4:24
mike74115-Dec-23 4:24 
AnswerRe: copying a file Pin
Mircea Neacsu5-Dec-23 4:32
Mircea Neacsu5-Dec-23 4:32 
AnswerRe: copying a file Pin
Richard MacCutchan5-Dec-23 5:05
mveRichard MacCutchan5-Dec-23 5:05 
AnswerRe: copying a file Pin
k50545-Dec-23 5:42
mvek50545-Dec-23 5:42 
QuestionMyth of a Myth? Pin
jschell4-Dec-23 4:38
jschell4-Dec-23 4:38 
AnswerRe: Myth of a Myth? Pin
Richard MacCutchan4-Dec-23 5:57
mveRichard MacCutchan4-Dec-23 5:57 
AnswerRe: Myth of a Myth? Pin
Mircea Neacsu4-Dec-23 6:05
Mircea Neacsu4-Dec-23 6:05 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.