Skip to content

Instantly share code, notes, and snippets.

@cyberhck
Last active June 10, 2016 07:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cyberhck/91faa270a0c4f0cbf15251b42bbda322 to your computer and use it in GitHub Desktop.
Save cyberhck/91faa270a0c4f0cbf15251b42bbda322 to your computer and use it in GitHub Desktop.
webserver
#include<netinet/in.h>
#include<signal.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<unistd.h>
#include<string.h>
void sig_handler();
const char * get_data();
int glob_sock;
int main(int argc, char *argv[]){
int create_socket, new_socket;
int yes = 1;
socklen_t addrlen;
int bufsize = 1024;
char *buffer = malloc(bufsize);
struct sockaddr_in address;
if((create_socket = socket(AF_INET, SOCK_STREAM, 0))>0 ){
glob_sock = create_socket;
printf("The socket was created\n");
}else{
printf("Socket creation failed\n");
return 1;
}
if (signal(SIGINT, sig_handler) == SIG_ERR)
printf("\nError:can't catch SIGINT\n");
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(15000);
if(setsockopt(create_socket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) == -1){
printf("Error:set sock opt\n");
}
if(bind(create_socket, (struct sockaddr *) &address, sizeof(address)) == 0){
printf("binding socket\n");
}else{
printf("Error: binding socket");
return 1;
}
while(1){ /*keep on listening*/
if(listen(create_socket, 10) < 0) {
printf("Error?:Server: listen");
return 1;
}
if ((new_socket = accept(create_socket, (struct sockaddr *) &address, &addrlen)) < 0) {
printf("error:server: accept");
exit(1);
}
if(new_socket > 0){
printf("new request received\n");
}
recv(new_socket, buffer, bufsize, 0);
printf("%s\n", buffer);
write(new_socket, "HTTP/1.1 200 OK\n", 16);
write(new_socket, "Content-length: 46\n", 19);
write(new_socket, "Content-Type: text/html\n\n", 25);
const char *data;
data = get_data();
write(new_socket,data,strlen(data));
//data = "<html><body><H1>Hello world</H1></body></html>\n";
//write(new_socket, "hello",5);
//write(new_socket, "world",5);
//write(new_socket, data, strlen(data));
//write(new_socket, data, strlen(data));
close(new_socket);
}
close(create_socket);
return 0;
}
void sig_handler(int signo)
{
close(glob_sock);
exit(0);
}
const char * get_data(){
return "Hel";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment