всем привет, у меня следующий вопрос:
у меня уже есть запрос к http/https серверу и HINTERNET от InternetConnect (т.е. я уже указал к какому серверу подключится).
Теперь вопрос — как получить сокет или как можно послать уже готовый запрос Internet функциями?
Здравствуйте, Аноним, Вы писали:
А>всем привет, у меня следующий вопрос: А>у меня уже есть запрос к http/https серверу и HINTERNET от InternetConnect (т.е. я уже указал к какому серверу подключится). А>Теперь вопрос — как получить сокет или как можно послать уже готовый запрос Internet функциями?
HTTPOpenRequest
InternetSetOption
HTTPSendRequest
Re[2]: wininet и получение сокета
От:
Аноним
Дата:
21.07.13 16:34
Оценка:
Здравствуйте, Pasha1st, Вы писали:
P>HTTPOpenRequest P>InternetSetOption P>HTTPSendRequest
не понял, у меня же нету урлы для того чтобы сделать HTTPOpenRequest, у меня есть сервер и порт. Урл уже в запросе (парсить не вариант). И чем мне поможет InternetSetOption?
Функция InternetQueryOption(), код параметра INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO, но начиная с Windows 7 работать не будет. А сокетный адрес можно ловить в InternetStatusCallback() перед InternetConnect(), код INTERNET_STATUS_CONNECTED_TO_SERVER, в параметре lpvStatusInformation будет структура SOCKADDR, которую следует привести к SOCKADDR_IN. Других вариантов не знаю, в WinHttp тоже ничего нет на эту тему. Боюсь, что тебе нужны самые обычные сокеты, а совсем не WinINet.
А>...или как можно послать уже готовый запрос Internet функциями?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Pasha1st, Вы писали:
P>>HTTPOpenRequest P>>InternetSetOption P>>HTTPSendRequest
А>не понял, у меня же нету урлы для того чтобы сделать HTTPOpenRequest, у меня есть сервер и порт. Урл уже в запросе (парсить не вариант). И чем мне поможет InternetSetOption?
Смысл WinInet/WinHTTP — отправить запрос, не заморачиваясь с прокси, авторизацией и https если требуется. Если всего этого не требуется и есть готовый запрос — то можешь его отправить просто через сокет. Но если же требуется именно WinInet — тогда придется из запроса вытащить url — не так это и сложно.
InternetSetOption потребуется как раз когда окажется что нужен HTTPS, авторизация на прокси и т.д.
Здравствуйте, x64, Вы писали:
x64>Функция InternetQueryOption(), код параметра INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO, но начиная с Windows 7 работать не будет. А сокетный адрес можно ловить в InternetStatusCallback() перед InternetConnect(), код INTERNET_STATUS_CONNECTED_TO_SERVER, в параметре lpvStatusInformation будет структура SOCKADDR, которую следует привести к SOCKADDR_IN. Других вариантов не знаю, в WinHttp тоже ничего нет на эту тему.
Вопреки утверждению msdn> INTERNET_STATUS_CONNECTING_TO_SERVER Connecting to the socket address (SOCKADDR) pointed to by lpvStatusInformation.
в lpvStatusInformation содержится стринг с ip адресом сервера.