我们目前正在使用Oat++ (https://oatpp.io/)作为嵌入式项目的We服务器。它可以在几种环境下运行: 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)),同样没有成功
发布于 2020-01-16 00:38:54
好吧,我们发现问题不在于getaddrinfo...很抱歉。
这个问题是由于IPv6 ( SimpleTCPConnectionProvider for linux的实现只使用INET6)造成的,而我们的系统只使用IPv4构建。
因此,我创建了自己的ServerConnectionProvider,它使用INET而不是INET6实现套接字。
https://stackoverflow.com/questions/59645977
复制相似问题