... и когда я пытаюсь открыть его через localhost в браузере, он просто загружается, но ничего не происходит ...
Это проблема, отличная от accept
возвращая -1, как заявлено в названии. Вы просто никогда не закрываете сокет и не отправляете действительный ответ HTTP, потому что вы используете sizeof(httpHeader)
в качестве длины для отправки. Но sizeof(httpHeader)
- это не длина (слегка недопустимого) заголовка, а sizeof(char*)
, т. Е. Вы отправляете только 8 байт (на 64-разрядных).
C Сокеты: что может вызвать функцию acceptвернуть -1
Как правило, это тот случай, когда сокет сервера каким-то образом недопустим или когда клиент закрыл сокет до того, как accept
вернулся в пространство пользователя (соединение выполняется внутри ядра ОС). Проверьте errno
для деталей в вашем конкретном случае. Обратите внимание, что errno
или perror
полезны только в том случае, если accept
действительно возвращает -1.