#include #include #include #include #include #define PORT 9000 #define BUFFER_SIZE 1024 int main(int argc, char **argv) { int serverSocket; struct sockaddr_in serverAddr; if ((serverSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket failed"); exit(EXIT_FAILURE); } serverAddr.sin_family = AF_INET; serverAddr.sin_addr.s_addr = INADDR_ANY; serverAddr.sin_port = htons(PORT); if (bind(serverSocket, (struct sockaddr *)&serverAddr, sizeof serverAddr) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } if (listen(serverSocket, 5) < 0) { perror("listen failed"); exit(EXIT_FAILURE); } printf("Server listening on port %d\n", PORT); while (1) { struct sockaddr_in clientAddr; socklen_t clientAddr_len = sizeof clientAddr; int *clientSocket = malloc(sizeof(int)); if ((*clientSocket = accept(serverSocket, (struct sockaddr *)&clientAddr, &clientAddr_len)) < 0) { perror("accept failed"); continue; } printf("Connected\n"); char buf[BUFFER_SIZE]; int bytes = recv(*clientSocket, buf, sizeof buf, 0); if (bytes < 0) { perror("error recv data from client"); continue; } // strip the header char *data = strstr(buf, "\r\n\r\n"); if (data) { printf("parsed data %s\n", data); } close(*clientSocket); printf("disconnected client.\n"); } close(serverSocket); return 0; }