diff --git a/src/server.c b/src/server.c index e02239f..07201b8 100644 --- a/src/server.c +++ b/src/server.c @@ -63,6 +63,7 @@ int main(void) { } /* Loop to accept incoming connections */ + // TODO: make threads instead of fork() while (RUN) { if ((child_sockid = accept(serv_sockid, (struct sockaddr *) &child_socket, (socklen_t *) &addr_len)) < 0) { perror("accept"); @@ -87,6 +88,26 @@ int main(void) { return EXIT_SUCCESS; } +/* Thread, listens for incoming messages */ +void ClientListener(int sockid) { + char buf[BUF_LEN]; + int n = 0; + + while (1) { + /* Read n bytes at a time, because we don't know how long the message will be */ + while ((n = read(sockid, buf, BUF_LEN)) > 0) { + // TODO: do somethig with the stream (push to global stack?) + } + if (n < 0) { + fprintf(stderr, "ERROR: read\n"); + break; + } + } +} + +/* Thread, sends messages to the client */ +void ClientSender(int sockid) {} + /* Handles a client after its connection */ void service(int sockid) { int i, n, t; diff --git a/src/server.h b/src/server.h index 7c068d8..7297bbd 100644 --- a/src/server.h +++ b/src/server.h @@ -3,6 +3,12 @@ #define LISTEN_ALL // define to listen on 0.0.0.0, else loopback +/* Thread, listens for incoming messages */ +void ClientListener(int); + +/* Thread, sends messages to the client */ +void ClientSender(int); + /* Handles a client after its connection */ void service(int);