В настоящее время мы используем Oat++ (https://oatpp.io/) в качестве веб-сервера для встроенного проекта. Он прекрасно работает с несколькими средами: Docker-контейнер, Ubuntu VM, Raspberry Pi 3.
Однако для этого проекта у нас есть собственный дистрибутив Linux, созданный с помощью Yocto (https://www.yoctoproject.org/) и после некоторой отладки мы понимаем, что getaddrinfo
(http://man7.org/linux/man-pages/man3/getaddrinfo.3.html) не работает.
Вот пример кода того, что происходит:
struct addrinfo *result = NULL;
struct addrinfo hints;
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
hints.ai_flags = AI_PASSIVE;
int iResult = getaddrinfo(NULL, "8080", &hints, &result);
// iResult == EAI_ADDRFAMILY
Кто-нибудь знает, в чем может быть проблема?
PS: Мы пытались сравнить конфигурацию ядра с конфигурацией Raspberry Pi 3, но безуспешно. PSS: Мы также пытались установить IP (т.е.: getaddrinfo("192.168.1.10", "8080", &hints, &result)), также безуспешно
gethostbyname
вместоgetaddrinfo
, если это вариант для вас - попробуйте его использовать. Я не знаю, работает ли это на Yocto, но, судя по обрывкам информации в Интернете, должно. См. предыдущую версию поставщика клиентских подключений — github.com/oatpp/oatpp/blob/ - person lganzzzo   schedule 08.01.2020