Du kan downloade BorlandC fra:
http://www.borland.com/products/downloads/download_cbuilder.html
Vælg "Compiler 5.5 windows."
Det er en kommando linie kompiler og intet andet, men en meget god kompiler.
Så skal du bruge følgende lidt modificerede udgave af koden. Kompiler den ved at skrive "bcc32 download.c" i en kommando prompt, hvor download.c er navnet på c-filen hvori du har gemt koden. Så kommer programmet til at hedde download.exe.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
#define TIMEOUT 15 /* Sec */
char cmd[1024]; /* Kommando buffer */
char resp[102400]; /* Vores side havner i denne buffer */
void get(char *hostname, short port, char *path)
{
int sd, status, len, ix, tmp;
struct sockaddr local,remote;
struct hostent *hostinfo;
fd_set ReadSet;
struct timeval Time;
/* create socket */
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sd == INVALID_SOCKET)
{
printf("Error creating socket: %d\n", WSAGetLastError());
return;
}
/* bind socket */
local.sa_family = AF_INET;
memset(local.sa_data, 0, sizeof(local.sa_data));
status = bind(sd, &local, sizeof(local));
if(status == INVALID_SOCKET)
{
printf("Error binding socket: %d\n", WSAGetLastError());
closesocket(sd);
return;
}
/* lookup host */
hostinfo = gethostbyname(hostname);
if(!hostinfo)
{
printf("Error looking up host: %s\n", hostname);
closesocket(sd);
return;
}
/* connect to host */
remote.sa_family = hostinfo->h_addrtype;
memcpy(remote.sa_data + 2, hostinfo->h_addr_list[0], hostinfo->h_length);
*((short *)remote.sa_data) = port;
tmp = remote.sa_data[0];
remote.sa_data[0] = remote.sa_data[1];
remote.sa_data[1] = (char )tmp;
status = connect(sd, &remote, sizeof(remote));
if(status != 0)
{
printf("Error connecting to host: %s port: %d\n", hostname, port);
closesocket(sd);
return;
}
/* send GET request */
sprintf(cmd, "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n", path, hostname);
status = send(sd, cmd, strlen(cmd), 0);
if(status < 0)
{
printf("Error sending POST request\n");
closesocket(sd);
return;
}
/* read response */
ix = 0;
memset(&ReadSet, 0, sizeof(ReadSet));
FD_SET(sd, &ReadSet);
Time.tv_sec = TIMEOUT;
Time.tv_usec = 0;
len = 1;
while(len > 0 && select(sd + 1, &ReadSet, 0, 0, &Time) > 0)
{
len = recv(sd, resp + ix, sizeof(resp) - ix - 1, 0);
ix += len;
Time.tv_sec = TIMEOUT;
Time.tv_usec = 0;
}
resp[ix] = 0;
printf("\n%s", resp);
closesocket(sd);
return;
}
int main(void)
{
WORD version = MAKEWORD(1, 1);
WSADATA wsaData;
WSAStartup(version, &wsaData);
get("
www.jubii.dk", 80, "/");
printf("Hit Enter to quit\n");
getchar();
WSACleanup();
return 0;
}