From 00a8022cfd93addc2f70d36da3deac9238a5257a Mon Sep 17 00:00:00 2001 From: asus Date: Wed, 8 Feb 2023 14:07:06 +0100 Subject: [PATCH] wip building base socket loop --- a.out | Bin 16328 -> 16488 bytes mini_serv.c | 78 +++++++++++++++++++++++----------------------------- 2 files changed, 35 insertions(+), 43 deletions(-) diff --git a/a.out b/a.out index b44fe3b9411664bd27ce0b924a89df73bf8dbcb3..6f869709052bae119aa79a41a867c7cc392c613d 100755 GIT binary patch delta 3322 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 diff --git a/mini_serv.c b/mini_serv.c index bdd71b7..8028920 100644 --- a/mini_serv.c +++ b/mini_serv.c @@ -33,55 +33,47 @@ void putstr(int fd, char *str) { write(fd, str, strlen(str)); } -void error(char *str, int code) { +void error(char *str) { putstr(2, str); - exit(code); + exit(1); } int main(int ac, char **av) { - int port; - int sockfd; -// int connfd; -// int len; - struct sockaddr_in servaddr; -// struct cli; + int port; + int server_fd; + int client_fd; + char buf[1024]; + struct sockaddr_in addr; + socklen_t len; + fd_set fds; - if (ac < 1) - error("Wrong number of arguments\n", 1); - port = atoi(av[1]); - if (port == -1) - error("Fatal error\n", 1); + if (ac != 2) + error("Wrong number of arguments\n"); + if ( (port = atoi(av[1])) == -1) + error("Fatal error\n"); - // socket create and verification - sockfd = socket(AF_INET, SOCK_STREAM, 0); - if (sockfd == -1) - error("socket creation failed...\n", 0); - else - putstr(1, "Socket successfully created..\n"); - bzero(&servaddr, sizeof(servaddr)); + if ( (server_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) + error("Fatal error\n"); + bzero(&addr, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl(2130706433); //127.0.0.1 + addr.sin_port = htons(port); - // assign IP, PORT - servaddr.sin_family = AF_INET; - servaddr.sin_addr.s_addr = htonl(2130706433); //127.0.0.1 - servaddr.sin_port = htons(8081); + len = sizeof(addr); + if (bind(server_fd, (const struct sockaddr *)&addr, len) == -1) + error("Fatal error\n"); + if (listen(server_fd, 10) == -1) + error("Fatal error\n"); -// // Binding newly created socket to given IP and verification -// if ((bind(sockfd, (const struct sockaddr *)&servaddr, sizeof(servaddr))) != 0) { -// printf("socket bind failed...\n"); -// exit(0); -// } -// else -// printf("Socket successfully binded..\n"); -// if (listen(sockfd, 10) != 0) { -// printf("cannot listen\n"); -// exit(0); -// } -// len = sizeof(cli); -// connfd = accept(sockfd, (struct sockaddr *)&cli, &len); -// if (connfd < 0) { -// printf("server acccept failed...\n"); -// exit(0); -// } -// else -// printf("server acccept the client...\n"); + while (1) { + if ( (client_fd = accept(server_fd, (struct sockaddr *)&addr, &len)) == -1) + error("Fatal error\n"); + FD_ZERO(&fds); + FD_SET(client_fd, &fds); + select(client_fd + 1, &fds, NULL, NULL, NULL); + if (FD_ISSET(client_fd, &fds)) + recv(client_fd, buf, 1024, 0); + } + return (0); } +