gsoap 不能同时服务于 ipv4 和 ipv6
gsoap does not serve over both ipv4 and ipv6
我正在尝试实现一个在 ipv4 和 ipv6 上侦听相同端口的 gsoap 服务器,但它没有在“netstat -l
”命令中作为 tcp6 列出,尽管我使用 -DWITH_IPV6 -DWITH_NO_IPV6_V6ONLY
宏编译了 gsoap definitions."netstat -l
" 命令有 tcp 侦听服务器。当我使用 -DWITH_IPV6 -DWITH_IPV6_V6ONLY
宏编译代码时,它仅适用于 Ipv6,并且“netstat -l
”响应具有 tcp6 侦听服务器。
当我调试 the code 时,我看到 soap_bind
函数通过 getaddrinfo
传递 ai_family = PF_UNSPEC
,它不使用返回的 addrinfo 数据的 ai_next
。 addrinfo.ai_family 设置为 AF_INET,addrinfo.ai_next->ai_family 设置为 AF_INET6 且不使用 addrinfo.ai_next
.
有什么方法可以成功with/out修补gsoap源代码吗?
据我研究,无法使用 gsoap 绑定和侦听两个地址族 AF_INET 和 AF_INET6。为了实现我的主题,我制作了两个 soap 对象并使用我修改的 soap_bind 函数绑定不同的套接字(一个是 ipv4,另一个是 ipv6)。
刚遇到这个完全相同的问题。
原来是支持的。
只需定义WITH_NO_IPV6_V6ONLY
。 (这导致 WITH_IPV6
被定义为 stdsoap2.h)
这导致在允许双栈套接字的套接字上设置一个选项。据我所知,取决于可能是默认的系统。它不在 Windows 下,您需要 Vista 或更高版本才能支持双栈。
我正在尝试实现一个在 ipv4 和 ipv6 上侦听相同端口的 gsoap 服务器,但它没有在“netstat -l
”命令中作为 tcp6 列出,尽管我使用 -DWITH_IPV6 -DWITH_NO_IPV6_V6ONLY
宏编译了 gsoap definitions."netstat -l
" 命令有 tcp 侦听服务器。当我使用 -DWITH_IPV6 -DWITH_IPV6_V6ONLY
宏编译代码时,它仅适用于 Ipv6,并且“netstat -l
”响应具有 tcp6 侦听服务器。
当我调试 the code 时,我看到 soap_bind
函数通过 getaddrinfo
传递 ai_family = PF_UNSPEC
,它不使用返回的 addrinfo 数据的 ai_next
。 addrinfo.ai_family 设置为 AF_INET,addrinfo.ai_next->ai_family 设置为 AF_INET6 且不使用 addrinfo.ai_next
.
有什么方法可以成功with/out修补gsoap源代码吗?
据我研究,无法使用 gsoap 绑定和侦听两个地址族 AF_INET 和 AF_INET6。为了实现我的主题,我制作了两个 soap 对象并使用我修改的 soap_bind 函数绑定不同的套接字(一个是 ipv4,另一个是 ipv6)。
刚遇到这个完全相同的问题。
原来是支持的。
只需定义WITH_NO_IPV6_V6ONLY
。 (这导致 WITH_IPV6
被定义为 stdsoap2.h)
这导致在允许双栈套接字的套接字上设置一个选项。据我所知,取决于可能是默认的系统。它不在 Windows 下,您需要 Vista 或更高版本才能支持双栈。