diff options
| author | pants <niklasjo2004@gmail.com> | 2026-09-21 14:17:45 -0700 |
|---|---|---|
| committer | pants <niklasjo2004@gmail.com> | 2026-09-21 14:17:45 -0700 |
| commit | a33d49ac4d1ce554c72770927957a089b4023bf1 (patch) | |
| tree | 17ea036b5a0e8b488dc236f0ce48a275ecd80ef8 /c/webserver.c | |
Diffstat (limited to 'c/webserver.c')
| -rw-r--r-- | c/webserver.c | 29 |
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); +} |
