summaryrefslogtreecommitdiff
path: root/c/webserver.c
diff options
context:
space:
mode:
authorpants <niklasjo2004@gmail.com>2026-09-21 14:17:03 -0700
committerpants <niklasjo2004@gmail.com>2026-09-21 14:17:03 -0700
commit7b21727285e50b0b050c4ddd70d07542229c5366 (patch)
tree5d369153c5df5b41f3750d25479a68f20169c8ff /c/webserver.c
init
Diffstat (limited to 'c/webserver.c')
-rw-r--r--c/webserver.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/c/webserver.c b/c/webserver.c
new file mode 100644
index 0000000..5de519c
--- /dev/null
+++ b/c/webserver.c
@@ -0,0 +1,29 @@
+#include <sys/socket.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/sendfile.h>
+#include <unistd.h>
+#include <netinet/in.h>
+
+// followed that one guys tutorial. can only send 256 bytes per request
+void main() {
+ int sock = socket(AF_INET, SOCK_STREAM, 0);
+ struct sockaddr_in addr = {
+ AF_INET,
+ 0x901f,
+ 0
+ };
+ bind(sock, &addr, sizeof(addr));
+ listen(sock, 32);
+ int client_fd = accept(sock, 0, 0);
+ char buffer[256] = {0};
+ recv(client_fd, buffer, 256, 0);
+
+ char* file = buffer + 5;
+ *strchr(file, ' ') = 0;
+ int opened_fd = open(file, O_RDONLY);
+ sendfile(client_fd, opened_fd, 0, 256);
+ close(opened_fd);
+ close(client_fd);
+ close(sock);
+}