I have written two simple programs ,one for server and one for client, to exchange messages after developing a TCP connection between them . I want client to send message to server two times ,but the problem I am facing is that at second time both programs get stuck. Here is the code.
Server.c
    // Connection already established upto this point
    // ------------------------------------- First Time -------------------------------
    printf("Receving messages ...\n");
    if (recv(client_sock, client_message, sizeof(client_message), 0) < 0)
    {
            printf("Receive Failed. Error!!!!!\n");
            return -1;
    }
    //while (strcmp(client_message, "DISCONNECTED") != 0) {
    printf("Client Message: %s\n", client_message);
    strcpy(server_message, client_message);
    // successfully send the message to the client but does not proceed after this line , where client_sock is the socket of client returned by 'accept' funtion call
    if (send(client_sock, server_message, strlen(server_message), 0) < 0)
    {
            printf("Send Failed. Error!!!!!\n");
            return -1;
    }
    
    printf("Came"); //Stuck here i.e this print statement doesn't get executed
    // ------------------------------------- Seconds Time -------------------------------
    printf("Receving messages ...");
    memset(client_message, '\0', sizeof(client_message));
    if (recv(client_sock, client_message, sizeof(client_message), 0) < 0)
    {
            printf("Receive Failed. Error!!!!!\n");
            return -1;
    }
    printf("Client Message: %s\n", client_message);
    strcpy(server_message, client_message);
    if (send(client_sock, server_message, strlen(server_message), 0) < 0)
    {
            printf("Send Failed. Error!!!!!\n");
            return -1;
    }
    // }
    close(client_sock);
    close(socket_desc);
    return 0;
My client code is:
printf("Connected\n");
    // ------------------------------------- First Time -------------------------------
    // Get Input from the User
    printf("Enter Message: ");
    scanf("%[^\n]", client_message);
    if (send(socket_desc, client_message, strlen(client_message), 0) < 0) {
            printf("Send Failed. Error!!!!\n");
            return -1;
    }
    if (recv(socket_desc, server_message, sizeof(server_message), 0) < 0) {
            printf("Receive Failed. Error!!!!!\n");
            return -1;
    }
    printf("Server Message: %s\n", server_message);
    
    printf("Yes"); // stuck here , this statement doesn't get executed
    memset(server_message, '\0', sizeof(server_message));
    memset(client_message, '\0', sizeof(client_message));
    // sleep(2);
    // ------------------------------------- First Time -------------------------------
    printf("Enter Message: ");
    scanf("%[^\n]", client_message);
    if (send(socket_desc, client_message, strlen(client_message), 0) < 0) {
            printf("Send Failed. Error!!!!\n");
            return -1;
    }
    if (recv(socket_desc, server_message, sizeof(server_message), 0) < 0) {
            printf("Receive Failed. Error!!!!!\n");
            return -1;
    }
    printf("Server Message: %s\n", server_message);
    memset(server_message, '\0', sizeof(server_message));
    memset(client_message, '\0', sizeof(client_message));
    // Closing the Socket
    // close(socket_desc);
    return 0;
Please help , where is the mistake so that it can successfully exchange messages two times.
