HTTP协议_获取服务器端IP

来源:互联网 发布:淘宝卖什么等级快 编辑:程序博客网 时间:2024/05/21 09:38

说明:

初步请求一个url。Crack Url后的host有多个ip。(服务器端可能集群,有多个ip)

获取真实处理该请求的的ip。

        WINHTTP_CONNECTION_INFO ConnInfo;DWORD dwConnInfoSize = sizeof(WINHTTP_CONNECTION_INFO);result = WinHttpQueryOption( hRequest_,WINHTTP_OPTION_CONNECTION_INFO,&ConnInfo,&dwConnInfoSize);if ( result != TRUE)return ::GetLastError();SOCKADDR_STORAGE remote_address = ConnInfo.RemoteAddress;sockaddr_in* pSin = (sockaddr_in*)((sockaddr*)&remote_address);if (code_ == 301 || code_ == 302){url_commpent_.re_remote_ip=inet_ntoa(pSin->sin_addr);std::stringstream port_to;port_to<<pSin->sin_port;url_commpent_.re_remote_port=port_to.str();}else{url_commpent_.remote_ip=inet_ntoa(pSin->sin_addr);std::stringstream port_to;port_to<<pSin->sin_port;url_commpent_.remote_port=port_to.str();}

解释:

用在WinHttpReceiveResponse之后。

返回结果在WINHTTP_CONNECTION_INFO结构体。需先将SOCKADDR_STORAGE转sockaddr,后转sockaddr_in。取出之后inet_ntoa得到点分十进制ip地址。同时可获取服务器端口。

0 0
原创粉丝点击