#include #include #include #include #include #include #define PORT 8080 int main() { struct sockaddr_in serverAddr, clientAddr; int serverAddrLen = sizeof(serverAddr); int clientAddrLen = sizeof(clientAddr); // Create a socket int server_fd = socket(AF_INET, SOCK_STREAM, 0); if (server_fd < 0) { perror("\nCouldn't create socket"); exit(EXIT_FAILURE); } // Initialize the server address structure serverAddr.sin_family = AF_INET; serverAddr.sin_addr.s_addr = INADDR_ANY; serverAddr.sin_port = htons(PORT); // Bind the socket to the server address if (bind(server_fd, (struct sockaddr *)&serverAddr;, serverAddrLen) < 0) { perror("\nCouldn't bind"); exit(EXIT_FAILURE); } // Start listening for incoming connections if (listen(server_fd, 10) < 0) { perror("\nCouldn't listen"); exit(EXIT_FAILURE); } // Accept a client connections int comm_fd = accept(server_fd, (struct sockaddr *)&clientAddr;, &clientAddrLen;); if (comm_fd < 0) { perror("\nCouldn't accept"); exit(EXIT_FAILURE); } char messageReceived[100]; while (1) { bzero(messageReceived, 100); // Receive data from the client recv(comm_fd, messageReceived, 100, 0); printf("\nMessage from client:\n%s", messageReceived); // Send the received data back to the client // send(comm_fd, messageReceived, strlen(messageReceived), 0); int numberOfWords = 0, numberOfAlphabets = 0; for(int i = 0; messageReceived[i] != '\0'; i++) { if(messageReceived[i] == ' ') { numberOfWords++; } else if((messageReceived[i] >= 'A' && messageReceived[i] <= 'Z') || (messageReceived[i] >= 'a' && messageReceived[i] <= 'z')) { numberOfAlphabets++; } } numberOfWords++; char buff[100]; sprintf(buff, "Number of alphabets: %d, Number of words: %d\n", numberOfAlphabets, numberOfWords); send(comm_fd, buff, strlen(buff), 0); if(strncmp(messageReceived, "Exit", 4) == 0) { printf("\nServer exiting...\n"); break; } } // Close the client connection close(comm_fd); close(server_fd); } Client #include #include #include #include #include #include #define PORT 8080 int main() { struct sockaddr_in serverAddr; // Create a socket int client_fd = socket(AF_INET, SOCK_STREAM, 0); if (client_fd < 0) { perror("\nCouldn't create socket"); exit(EXIT_FAILURE); } // Initialize the server address structure serverAddr.sin_family = AF_INET; serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serverAddr.sin_port = htons(PORT); // Establish a connection to the server if (connect(client_fd, (struct sockaddr *)&serverAddr;, sizeof(serverAddr)) < 0) { perror("\nCouldn't connect"); exit(EXIT_FAILURE); } char messageSent[100]; char messageReceived[100]; while (1) { bzero(messageSent, 100); bzero(messageReceived, 100); // Read a line of text from the user printf("\nEnter message:\n"); fgets(messageSent, 100, stdin); // Send the user's input to the server send(client_fd, messageSent, sizeof(messageSent), 0); // Receive the response from the server recv(client_fd, messageReceived, 100, 0); // Print the server's response printf("\nMessage from server:\n%s", messageReceived); if (strncmp(messageSent, "Exit", 4) == 0) { printf("\nClient exiting...\n"); break; } } close(client_fd); }