#include #include #include #include #include #include int main(int argc, char const* argv[]) { if (argc < 3) { printf("Usage: %s \n", argv[0]); return -1; } int PORT = atoi(argv[2]); int client_fd; struct sockaddr_in serv_addr; char buffer[2000] = {0}; // Create socket if ((client_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("\n Socket creation error \n"); return -1; } serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(PORT); // Convert IPv4 and IPv6 addresses from text to binary form if (inet_pton(AF_INET, argv[1], &serv_addr.sin_addr) <= 0) { printf("\nInvalid address/ Address not supported \n"); return -1; } if (connect(client_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { printf("\nConnection Failed \n"); return -1; } printf("Connected to the server. Type 'exit' to quit.\n"); while (1) { printf("Enter message: "); char message[1024]; fgets(message, 1024, stdin); // Read input from user if (send(client_fd, message, strlen(message), 0) < 0) { printf("Send failed\n"); break; } if (strncmp(message, "exit", 4) == 0) { break; } // Now read server response memset(buffer, 0, sizeof(buffer)); // Clear buffer if (read(client_fd, buffer, sizeof(buffer) - 1) < 0) { printf("Read failed\n"); break; } printf("Server reply: %s\n", buffer); } close(client_fd); return 0; }