summaryrefslogtreecommitdiff
path: root/c/webserver.c
diff options
context:
space:
mode:
authorpants <niklasjo2004@gmail.com>2026-09-21 14:17:45 -0700
committerpants <niklasjo2004@gmail.com>2026-09-21 14:17:45 -0700
commita33d49ac4d1ce554c72770927957a089b4023bf1 (patch)
tree17ea036b5a0e8b488dc236f0ce48a275ecd80ef8 /c/webserver.c
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);
+}