У меня небольшая программа клиент-сервер, и я хочу закрыть соединение с клиентом через 10 секунд максимального времени ожидания. У меня есть сигнал тревоги, и функция, которая закрывает соединение, и обработчик сигнала тревоги выглядят так:
void closeClient() {
int nr = close(conn);
if (nr == 0)
printf("Client connection closed.\n");
else {
printf("Error while closing client connection. Error code: %d\n",errno);
exit(1);
}
exit(0); // Process ends after serving the client
}
void time_out(int signal) {
printf("Time out.\n");
char* msg = "Time out.Connection to server is closed\n\0";
send(conn, msg, strlen(msg),0);
closeClient(conn);
exit(1);
}
Проблема в том, что клиент печатает сообщение («Тайм-аут. Соединение с сервером закрыто») только в том случае, если он пытается что-то отправить на сервер (после того, как соединение уже закрыто). Я не могу понять, почему. Некоторые предложения?