gsoap无法解析ipv6

飞鸟慕鱼 2019-01-10 11:49:00
两种情况
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
...全文
365 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞鸟慕鱼 2019-03-06
  • 打赏
  • 举报
回复
是的,-D WITH_IPV6 就可以了,ios已经审核通过了
凛寒 2019-03-05
  • 打赏
  • 举报
回复
我在编译客户端时增加编译选项 -D WITH_IPV6 ,就可以同时访问ipv6和ipv4服务器。

65,199

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧