gsoap无法解析ipv6

飞鸟慕鱼 飞鸟慕鱼 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
两种情况
1.服务器绑定ipv4和ipv6的地址,发布到iis上,浏览器都可以访问,但是gsoap代码只能访问ipv4,无法访问ipv6

代码如下
// gsoapClient.cpp: 定义应用程序的入口点。
//
#include "gsoapClient.h"
#include "soapH.h"
#include "httpget.h"
#include "stdsoap2.h"
#include "soapStub.h"
#include "WebService1Soap.nsmap"
#define WITH_IPV6
using namespace std;
const char * URL = "http://[2001:0:9d38:6ab8:28de:40c:8b3f:db68]:9995/api/values/6";
//const char * URL = "http://192.168.0.103:9994/api/values/6";
int main()
{
cout << "Hello CMake。" << endl;
struct soap *soap;
char *body;

soap = soap_new();
soap_set_omode(soap, SOAP_C_UTFSTRING);
soap->bind_inet6 = 1;
printf("ip%s\n", soap->ip);
//soap->ip = 999;
soap_register_plugin(soap, http_get); /* register plugin */
if (soap_get_connect(soap, URL, NULL)
|| soap_begin_recv(soap))
{
soap_print_fault(soap, stderr);
printf("111\n");
getchar();
return(1);
}
if (soap->http_content)
printf("HTTP Content Type: %s\n", soap->http_content);
body = soap_get_http_body(soap, NULL);
soap_end_recv(soap);
if (body)
printf("HTTP Body:\n%s\n", body);
//printf("%s\n", soap->host);
printf("%s\n", soap->path);
printf("ip%s\n", soap->ip);
//printf("%s\n", soap->body);

soap_end(soap);
soap_done(soap);


getchar();
return 0;
}


错误信息


2.客户端本身处在纯ipv6的环境下,无法访问服务器的ipv4地址
说明一下:这个gsoap是用在ios的app中,做为底层通信与服务器连接。封装在C++中。然后obj-c调c++。

代码与上述相似,只是还调了webservice的接口。上面的是调webapi的。
错误信息是 network unreachable
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
飞鸟慕鱼
C++ 语言 65,214 成员 250,514 内容