Hikvision HCNetSDK Ошибка 9: NET_DVR_NETWORK_RECV_ERROR — ошибка приема
- Функции получения данных возвращают
FALSEс кодом ошибки9. - Поток видеоданных прерывается через несколько секунд после успешного старта.
- SDK регистрирует неожиданное закрытие удаленного сокета со стороны видеорегистратора/камеры.
1. Проверка логов устройства на предмет внезапной перезагрузки
Ошибка 9 чаще всего возникает, когда удаленное устройство аварийно перезагружается прямо во время обработки клиентского запроса (Watchdog Reboot / Kernel Panic). Проверьте системный журнал камеры:
curl -k -v --digest -u admin:Hikvision123+ "http://192.168.1.64/ISAPI/System/deviceInfo"Обратите внимание на поле <deviceUpTime>.
2. Захват дампа сетевого трафика (Wireshark / tcpdump)
Снимите дамп для выявления стороны, инициирующей разрыв (FIN/RST):
tcpdump -nn -i any host 192.168.1.64 and port 8000 -w hik_recv_err.pcap3. Проверка стабильности питания по PoE
При включении ИК-подсветки или старте моторов PTZ энергопотребление камеры резко возрастает. Если бюджет PoE-коммутатора исчерпан, камера кратковременно перезагружается, вызывая ошибку 9 у всех подключенных SDK клиентов.
4. Обработка ошибки в Exception Callback
void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser) {
if (dwType == EXCEPTION_RECV_ERROR || dwType == EXCEPTION_SOCKETERROR) {
printf("Network Receive Error detected on UserID: %ld, Handle: %ld\n", lUserID, lHandle);
// Логика безопасного перезапуска клиентской сессии
}
}
// Регистрация в процессе запуска:
NET_DVR_SetExceptionCallBack_V30(0, NULL, g_ExceptionCallBack, NULL); Частые вопросы (FAQ)
В чем отличие ошибки 9 (RECV_ERROR) от ошибки 10 (RECV_TIMEOUT)?
Ошибка 9 возникает при физическом или логическом разрыве сокета (соединение сброшено RST флагом или закрыто удаленным хостом). Ошибка 10 означает, что сокет активен, но за отведенное время ожидаемые данные не поступили.
Может ли ошибка 9 быть вызвана антивирусным экраном на сервере?
Да, если антивирус инспектирует поток и обнаруживает сигнатуру, похожую на эксплойт, он принудительно разрывает сокет со стороны хоста.
Что делать, если ошибка 9 возникает только при экспорте архива за определенную дату?
Это указывает на наличие сбойных секторов (Bad Blocks) на жестком диске NVR. При попытке чтения поврежденного сектора медиадемон регистратора падает в segmentation fault.
Как изолировать сбой питания PoE от сетевой проблемы?
Подключите камеру через локальный блок питания 12V DC вместо PoE и повторите длительный тест непрерывного чтения потока.