Sunday, November 06, 2005

Hello World Web Server

/* The Hello World web server. Type http://localhost:2001 in your
   web browser after running this program. */

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define SOURCE_PORT 2001 /* Use a large port number. */
#define SIZE 1024

/* This is used to initialize an address with a port */

void initaddr(struct sockaddr_in * s,char *hostname,int port) {
  s->sin_family=AF_INET;
  s->sin_port=htons(port);
  inet_aton(hostname,&s->sin_addr);
  memset(&s->sin_zero,0,8);
}

int main() {
  struct sockaddr_in source_addr,new_addr;
  int sockfd;
  int newfd;
  char message[SIZE];
  int sin_size=sizeof(struct sockaddr_in);
  sockfd=socket(PF_INET,SOCK_STREAM,0);
  initaddr(&source_addr,"127.0.0.1",SOURCE_PORT);
  bind(sockfd,(struct sockaddr *)&source_addr,sin_size);
  listen(sockfd,1);
  while(newfd=accept(sockfd,(struct sockaddr *)&new_addr,&sin_size)) {
    recv(newfd,message,SIZE,0);
    strcpy(message,"Hello world!!\n");
    send(newfd,message,strlen(message),0);
    close(newfd);
  }
  close(sockfd);
}

No comments: