假设现在有HTTP代理IP:192.168.1.1端口是80
SOCK5代理IP:192.168.1.2端口也是80 但是SOCK5有帐号密码验证 帐号:user 密码:passd请问下 怎么MFC里怎么对这两个代理IP验证是否有效呢? 附上我自己的部分代码,是从网上搬过来的、测试了下
代理IP地址端口密码无论写什么 都为有效 不知道问题出在哪里 求助!!
CString content;
bool TestProxyData(LPCTSTR Proxy,LPCTSTR ProxyPassd)  //代理IP检测函数
{  
CString data;  
DWORD dwStatusCode;  
CInternetSession session("HttpClient");  
CHttpFile *pfile = NULL;    
INTERNET_PROXY_INFO proxyinfo;  
proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;  
proxyinfo.lpszProxy = Proxy;  
proxyinfo.lpszProxyBypass = ProxyPassd;  
session.SetOption(INTERNET_OPTION_PROXY,(LPVOID)&proxyinfo,sizeof(INTERNET_PROXY_INFO));  
session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 2000);           // 2秒的连接超时  
session.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 1000);              // 1秒的发送超时  
session.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT, 7000);           // 7秒的接收超时  
session.SetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT, 1000);         // 1秒的发送超时  
session.SetOption(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, 7000);      // 7秒的接收超时  
session.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 1);              // 1次重试  
try  
{  
pfile = (CHttpFile*)session.OpenURL("http://ip.dnsexit.com/", 1, INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE);  
}  
catch (CInternetException *e)  
{  
pfile = NULL;  
e->Delete();  
session.Close();  
return false;  
}  
pfile->QueryInfoStatusCode(dwStatusCode);  
if(dwStatusCode == HTTP_STATUS_OK)    
{     
while (pfile->ReadString(data))    
{    
content += data;    
}  
pfile->Close();  
session.Close();  
return true;  
}  
else  
{  
return false;  
}  
}  typedef struct tagProxyIP{
int num;//序号
CString ProxyIP;//代理IP地址
CString IPtype;//IP类型
int nPot;//代理端口
CString IPUser;//代理IP帐号
CString IPpwd;//代理IP密码
CString ISnormal;//是否有效
}stcProxyIP;
//代理IP列表所用的结构vector<stcProxyIP> g_vecIP; //用了个容器来保存代理IP CString buf,buf1,buf2="";
for (int i=0;i<g_vecIP.size();i++) //循环遍历代理IP列表
{
buf.Format("%d",g_vecIP[i].nPot);
if (g_vecIP[i].IPUser=="")
{
buf1=g_vecIP[i].ProxyIP+":"+buf;
}else if (g_vecIP[i].IPUser!="")
{
buf1=g_vecIP[i].ProxyIP+":"+buf;
buf2=g_vecIP[i].IPUser+":"+g_vecIP[i].IPpwd;
}
if (TestProxyData(buf1,buf2))
{
g_vecIP[i].ISnormal="有效";
}else
{
g_vecIP[i].ISnormal="无效";
} }