getaddrinfo在使用Yocto构建的发行版上返回EAI_ADDRFAMILY

问题描述 投票:4回答:1

我们目前正在使用Oat ++(https://oatpp.io/)作为嵌入式项目的Web服务器。在以下几种环境下工作是令人惊奇的:Docker容器,ubuntu VM,Raspberry Pi 3。

但是,对于这个项目,我们有自己的用Yocto(https://www.yoctoproject.org/)构建的linux发行版,并且在进行一些调试之后,我们意识到getaddrinfohttp://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)),但也没有成功

linux embedded embedded-linux yocto getaddrinfo
1个回答
0
投票

嗯,我们发现问题不在于getaddrinfo ...抱歉。

问题是由于IPv6(Linux的SimpleTCPConnectionProvider的实现仅使用INET6),而我们的系统仅使用IPv4构建。

因此,我创建了自己的ServerConnectionProvider,该实现使用INET而不是INET6实现套接字。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.