The Open Source Swiss Army Knife

/code/c/unix_c/select/
/code/c/unix_c/select/ + sub-categories
http://www.sirfsup.com/
web directory content
    
      

Not logged in
Chat Register Login
return to:  http:/www.sirfsup.com      /code   /c   /unix_c   /select 
Permalink: web_server2.c
Title: add
article options : please login   |  raw source view  

/*******************************************************************************
 * 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);
    }

}

Leave a Reply
Your Name:     anonymous
Your Email:
Website:  
Comments:

The author will be notified of your reply.
return to top