Socket Program на C, отправка сообщения, блокирующего дополнительный код - PullRequest
0 голосов
/ 26 сентября 2018

Я новичок в программировании сокетов, и в настоящее время я сталкиваюсь с проблемой отправки / получения информации между моим клиентом и сервером.В настоящее время я отправляю «TRN» моему клиенту, который получен и обработан на моей стороне клиента, но затем моя программа застревает.Консоль печатает [DEBUG] Sent start message., но затем никогда не попадает в сообщение MADE IT HERE 1.На стороне клиента, когда он получает «TRN», он обрабатывается, и int отправляется обратно на сервер, который я хочу получить, однако он не делает это так далеко.Это мой код:

/* Send the start message. */
write_client_msg(cli_sockfd, "TRN");
printf("\n[DEBUG] Sent start message.\n");
int place_reveal = 0;
printf("\nMADE IT HERE 1");
place_reveal = recv_int(cli_sockfd);
printf("\nThis is the users results: %d", place_reveal);

/* Writes a message to a client socket. */
void write_client_msg(int cli_sockfd, char * msg)
{
    int n = write(cli_sockfd, msg, strlen(msg));
    if (n < 0)
        error("ERROR writing msg to client socket");

}

/* Reads an int from a client socket. */
int recv_int(int cli_sockfd)
{
    printf(" MADE IT HERE 2");

    int msg = 0;
    int n = read(cli_sockfd, &msg, sizeof(int));

    if (n < 0 || n != sizeof(int)) /* Not what we were expecting. Client likely disconnected. */
        return -1;

    printf("[DEBUG] Received int: %d\n", msg);

    return msg;
}

Я обнаружил, что когда я нажимаю Control C для выхода из программы, вывод консоли таков:

^C
MADE IT HERE 1 MADE IT HERE 2
OUCH you hit Ctrl-C?!
Goodbye!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...