假设现在有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="无效";
} }
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="无效";
} }
解决方案 »
- 关于酷狗,QQ音乐的桌面歌词 实现原理
- 播放wav文件,需要注意什么?
- ChatRoomClient\ChatRoomClientDlg.cpp(284) : fatal error C1004: unexpected end of file found
- VC/MFC半年专家总榜述评、奖励和悬赏
- VC使用ADO的问题,出现错误提示:IDispatch error #3149
- 如何给CView类中的滚动条添加处理程序?
- 文本显示问题?
- 将c语言中的malloc 换成数组表示,需要注意那些地方?重分答谢!
- 在线等候:如何实现一个阻塞函数?
- 怎样弄一个当鼠标移一个按钮时弹出一个黄色的对话框,里面有提示的内容
- CImage加载位深度为32位的JPG图片,显示不全
- MFC中怎么使Webbroser的数据加载完以后再继续运行cpp中的代码?
因此试试在构造函数时填好代理参数CInternetSession session("HttpClient", 1, INTERNET_OPEN_TYPE_PROXY, XXXXXXXXX);