/*******************************************************************************
* File: "web_server.c" http://www.iro.umontreal.ca/~cotema/ift6815/web_server.c
* avec la permission du monsieur qui l'a ecrit tres bien
* Copyright (C) 2003 by Martin Cote
******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <sys/types.h>
#include <unistd.h>
#define BUF_SIZE 1024
char buf[BUF_SIZE+1];
int main(int argc, char** argv)
{
int sock0;
int sock1;
struct sockaddr_in addr;
int port;
int i = 1;
if (argc != 2)
{
printf("Utilisation: ./web_server <port>");
return 0;
}
port = atoi(argv[1]);
sock0 = socket(PF_INET, SOCK_STREAM, 0);
addr.sin_family = PF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sock0, (struct sockaddr*)&addr, sizeof(addr));
listen(sock0, 5);
for (;i != 0;)
{
struct sockaddr client;
int client_len = sizeof(client);
sock1 = accept(sock0, &client, &client_len);
printf("Accepting connections on port %d\n", port);
if (fork() == 0)
{
close(sock0);
read(sock1, buf, BUF_SIZE);
{
char* out = "<html><title>IFT6815</title><body><h1>IFT6815 web server</h1><h3><a href=\"http://www.sirfsup.com/languages/c/unix_c/select/web_server.c\">I put it here</a></h3></body></html>";
write(sock1, out, strlen(out));
i = 0;
printf("Ecriture?\n");
}
close(sock1);
exit(0);
}
close(sock1);
}
}
return to top