Skip to content

Instantly share code, notes, and snippets.

@atomkirk
Created January 22, 2015 03:51
Show Gist options
  • Save atomkirk/3399d32614c5a77514ba to your computer and use it in GitHub Desktop.
Save atomkirk/3399d32614c5a77514ba to your computer and use it in GitHub Desktop.
Simple C Web Server
/* A simple server in the internet domain using TCP
The port number is passed as an argument */
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int sockfd, newsockfd, portno;
socklen_t clilen;
char buffer[256];
struct sockaddr_in serv_addr, cli_addr;
int n;
if (argc < 2) {
fprintf(stderr,"ERROR, no port provided\n");
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);
n = bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
listen(sockfd,5);
clilen = sizeof(cli_addr);
newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
bzero(buffer, 256);
read(newsockfd, buffer, 255);
char * message =
"HTTP/1.1 200 OK\n"
"Date: Thu, 22 Jan 2015 00:53:12 GMT\n"
"Server: Adam\n"
"Content-Type: text/html\n"
"Keep-Alive: timeout=30, max=500\n"
"Connection: Keep-Alive\n"
"\n"
"Helloooo!!!!\n";
n = write(newsockfd, message, strlen(message));
close(sockfd);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment