Я пишу программы клиент-сервер UDP на C на Linux. Дело в том, что я должен добавить функцию проверки соединения. В справочных страницах Linux я нашел пример клиента UDP с этой функцией (http://www.kernel.org/doc/man-pages/online/pages/man3/getaddrinfo.3.html). Он использует функции записи / чтения для проверки ответа сервера. Я попытался применить его к моей программе, и это выглядит так:
char *test = "test";
nlen = strlen(test) + 1;
if (write(sock, test, nlen) != nlen) { // socket with the connection
fprintf(stderr, "partial/failed write\n");
exit(EXIT_FAILURE);
}
nread = read(sock, buf, nlen);
if (nread == -1) {
perror("Connection");
exit(EXIT_FAILURE);
}
проблема в том, чем я запускаю программу с этим битом, когда сервер включен, он ничего не делает, кроме чтения бесконечного времени ввода, которое он тоже не использует. Я попытался убить прерывание (getpid (), SIGHUP), которое я нашел здесь, на другую похожую тему, и завершение работы (sock, 1), но, похоже, ничего не работает. Не могли бы вы рассказать мне, как остановить чтение ввода или любой другой возможный вариант, чтобы проверить, активен ли сервер udp?