Я использую сервер 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-адрес в функции навигации, и я должен всегда использовать имя хоста и надеяться, что клиент всегда сможет разрешить имя хоста?