Мне нужно некоторое представление об обработке ошибок сокетов в C ++ (или c). Я тестирую простую клиентскую и серверную программу, например:
.....
while (1) { // server keeps sending strings to client
sprintf(jsonStr, "{ \"%d: Hello\": \"world!\" } \n", index++);
size = send(newsockfd, jsonStr, strlen(jsonStr), 0);
if (size == -1) {
error("ERROR on send");
}
sleep(1);
}
.....
Пока клиент получает строки с сервера, если я убью клиента, сервер также завершит работу без какого-либо сообщения. Ожидается ли это? Как мне его поймать, а не выйти? Я пробовал «попробовать» и «поймать», но не смог. С java я получаю SocketException "Broken pipe", используя DataOutputStream.writeUTF (). Я тестировал Ma c и Linux, и их результаты были одинаковыми.
Я использую примеры кодов из: https://www.bogotobogo.com/cplusplus/sockets_server_client.php
Заранее спасибо.