Giovanni's Diary > Subjects > Programming > Gists >
C / inet_server.c
Create an inet server that reads data sent to it.
// SPDX-License-Identifier: MIT // Author: Giovanni Santini // Github: @San7o // Create an inet server that reads data sent to it #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <time.h> #define MSG_BUFF_SIZE 1024 #define PORT 5000 int main(void) { int listenfd = 0, connfd = 0; struct sockaddr_in serv_addr; char msg_buff[MSG_BUFF_SIZE]; listenfd = socket(AF_INET, SOCK_STREAM, 0); if (listenfd < 0) { perror("Error creating socket"); return 1; } memset(&serv_addr, 0, sizeof(serv_addr)); memset(msg_buff, 0, MSG_BUFF_SIZE); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(PORT); if (bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) { perror("Error during binding"); return 1; } printf("Listening 0.0.0.0 on port %d\n", PORT); if (listen(listenfd, 10) < 0) { perror("Error listening on socket"); return 1; } connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); if (connfd < 0) { perror("Error accepting connection"); return 1; } ssize_t bytes; while (1) { bytes = read(connfd, msg_buff, MSG_BUFF_SIZE); if (bytes == 0) continue; printf("Server received: %s\n", msg_buff); memset(msg_buff, 0, MSG_BUFF_SIZE); } close(connfd); }