diff options
author | Raymaekers Luca <raymaekers.luca@gmail.com> | 2024-10-24 23:10:31 +0200 |
---|---|---|
committer | Raymaekers Luca <raymaekers.luca@gmail.com> | 2024-10-24 23:10:31 +0200 |
commit | f37cce374cc9da243fc2babbea9a7051f15db80a (patch) | |
tree | 7a6b0e5f7bd38cbd39ba1e1f43689ca6be92c53e /recv.c | |
parent | c7687f88bc5cb4d25304b0ee19789c37aebd7b6d (diff) |
Archive code into v1/ directory
The code was written too fast and I deemed that it would be better to
make a new draft.
Diffstat (limited to 'recv.c')
-rw-r--r-- | recv.c | 57 |
1 files changed, 0 insertions, 57 deletions
@@ -1,57 +0,0 @@ -// Minimal server implementation for probing out things - -#include "common.h" -#include <arpa/inet.h> -#include <errno.h> -#include <poll.h> -#include <sys/socket.h> -#include <unistd.h> - -int main(void) -{ - u32 serverfd, clientfd; - u8 on = 1; - - const struct sockaddr_in address = { - AF_INET, - htons(PORT), - {0}, - }; - - serverfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - setsockopt(serverfd, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)); - if (bind(serverfd, (struct sockaddr *)&address, sizeof(address))) - return 1; - - listen(serverfd, 256); - - clientfd = accept(serverfd, 0, 0); - - struct pollfd fds[1] = { - {clientfd, POLLIN, 0}, - }; - - for (;;) { - int ret = poll(fds, 1, 50000); - if (ret == -1) - return 2; - - if (fds[0].revents & POLLIN) { - u8 recv_buf[BUF_MAX]; - u32 nrecv = recv(clientfd, recv_buf, sizeof(recv_buf), 0); - - writef("client(%d): %d bytes received.\n", clientfd, nrecv); - if (nrecv == -1) { - return errno; - } else if (nrecv == 0) { - writef("client(%d): disconnected.\n", clientfd); - fds[0].fd = -1; - fds[0].revents = 0; - close(clientfd); - return 0; - } - } - } - - return 0; -} |