Skip to content

Instantly share code, notes, and snippets.

@ikariiin
Created September 16, 2017 04:30
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 ikariiin/5a1f0037ef72a39de7ce5f4970e5f12d to your computer and use it in GitHub Desktop.
Save ikariiin/5a1f0037ef72a39de7ce5f4970e5f12d to your computer and use it in GitHub Desktop.
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#ifndef true
#define true 1
#endif
int socket_create();
void infinite_loop();
void main() {
struct sockaddr_in listeningAddr;
int socketFD = socket_create();
memset(&listeningAddr, 0, sizeof(listeningAddr));
listeningAddr.sin_family = AF_INET;
listeningAddr.sin_addr.s_addr = htonl(INADDR_ANY);
listeningAddr.sin_port = htons(8080);
bind(socketFD, (struct sockaddr*) &listeningAddr, sizeof(listeningAddr));
if(listen(socketFD, 5) == -1) {
printf("Woah there! I couldn't startup the server!");
}
infinite_loop();
}
void infinite_loop(int socketFD) {
char buffer[1024];
memset(buffer, 0, sizeof(buffer));
printf("Starting infinite loop, don't worry, everything would be okay!\n");
do {
int connectionFD = accept(socketFD, (struct sockaddr*) NULL, NULL);
/*Accept is a blocking call! The following code wont execute until, accept() returns.*/
strcpy(buffer, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nHello!");
write(connectionFD, buffer, sizeof(buffer));
char request[2048];
read(connectionFD, &request, sizeof(request));
printf("Request received!\n%s", request);
close(connectionFD);
} while (true);
}
int socket_create() {
return socket(AF_INET, SOCK_STREAM, 0);
}
@ikariiin
Copy link
Author

After char request[2048] there shall be a memset(request, 0, sizeof(request));

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment