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.