#include #include #include #include #include #define PORT 5000 #define BUFFER_SIZE 1024 int main() { int sock; struct sockaddr_in server_addr, client_addr; socklen_t addr_len = sizeof(client_addr); char buffer[BUFFER_SIZE]; // Create socket if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("Socket creation failed"); exit(EXIT_FAILURE); } // Set up server address memset(&server_addr, 0, sizeof(server_addr)); // Clear structure server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; // Bind to all available interfaces server_addr.sin_port = htons(PORT); // Port number // Bind socket to the port if (bind(sock, (const struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { perror("Bind failed"); close(sock); exit(EXIT_FAILURE); } printf("Server is listening on port %d...\n", PORT); // Receive messages from client while (1) { int n = recvfrom(sock, (char *)buffer, BUFFER_SIZE, 0, (struct sockaddr *)&client_addr, &addr_len); buffer[n] = '\0'; // Null-terminate the received message printf("Client: %s\n", buffer); // Send a response to the client char *response = "Message received by server!"; sendto(sock, (const char *)response, strlen(response), 0, (const struct sockaddr *)&client_addr, addr_len); } // Close socket close(sock); return 0; }