CAtlHttpClient -导航到IP6地址似乎不工作
CAtlHttpClient - Navigate to an IP6 address seems not to work
我使用ATL服务器CAtlHttpCLient发送HTTP请求到服务器。
基本上我的代码是这样的:
ATL::CAtlHttpClient client;
ATL::CAtlNavigateData navigateData;
navigateData.SetSocketTimeout(60000);
navigateData.SetMethod(ATL_HTTP_METHOD_POST);
BX_TString jmfmime = "application/vnd.cip4-jmf+xml";
navigateData.SetPostData((BYTE*) msg.c_str(), msg.length(), jmfmime.c_str());
client.Navigate("http://[fe80::21a:a0ff:fec1:5917%6]:8090/someextrastuff", &navigateData);
当我使用IP4地址连接时,一切都工作得很好。然而,导航功能似乎对IP6地址不起作用。
内部'['和']'字符不被认为是URL中的有效字符,URL被转换为类似于http://%5bfe80::21a:a0ff:fec1:5917%6%5d:8090/someextrastuff
的内容。因此,URL无法被解析。
我理解CAtlHttpClient应该支持IP4和IP6地址。看来我遗漏了什么。
我应该用另一种方式指定IP6地址吗?
或者我不允许在导航函数中指定IP地址,我应该始终使用主机名并希望客户端始终能够解析主机名吗?
在我的ATL版本中(包含在Visual Studio 2005中),URL是用CUrl helper类解析的;这个类似乎不支持IPv6地址。也许在最近的版本中修复了这个问题?如果没有,您可以手动构建一个CUrl对象并将其传递给重载的Navigate()方法。
相关文章:
- 将数组的地址分配给变量并删除
- QSqlquery prepare()和bindvalue()不工作
- 空基优化子对象的地址
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 导入库可以跨dll版本工作吗
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 如何在c++程序中找到函数的地址
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 变量地址的运算符[]是如何工作的
- 在 Xcode 中工作的 CMake 中启用地址清理器的正确方法是什么
- C 在我的计算机上工作正常,但在Leetcode上获得地址消毒器堆越流行错误
- Outlook -从显示名称获取电子邮件地址.可以在Python中工作,而不是C
- 为什么数据断点不能在未对齐的地址上工作
- libmysql mysql_real_connect与IP地址失败,但与本地主机工作
- 如何工作与内存地址在C?它们是十六进数还是无符号整型
- 进程外内存堆围绕32位地址空间工作
- c++简单聊天不工作与我的IP地址
- CAtlHttpClient -导航到IP6地址似乎不工作