代理服务器的使用 (proxy)
关于 proxy 的用处,我就不多说了,大家心照不宣。如果使用VB6 的 Inet Control, proxy 的设置则极为简单:
objInet.AccessType = icNamedProxy
objInet.Proxy = Trim(proxyAddress.Text)
objInet.Protocol = icHTTP
在 mfc 中也不难:
bool CProxySetting::SetHttpProxy(LPCTSTR strProxy)
{
::INTERNET_PROXY_INFO proxyInfo;
CString m_strHttpProxy, s;
s = strProxy;
s.Trim();
if (s != "") {
if (s.Find(".")<0 || s.Find(":")<0)
return false;
m_strHttpProxy = CString("http=") + strProxy;
proxyInfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
proxyInfo.lpszProxy = m_strHttpProxy;
proxyInfo.lpszProxyBypass = "<local>";
}
else {
proxyInfo.dwAccessType = INTERNET_OPEN_TYPE_DIRECT;
proxyInfo.lpszProxy = NULL;
proxyInfo.lpszProxyBypass = NULL;
}
bool bResult = ::InternetSetOption(NULL, INTERNET_OPTION_PROXY, &proxyInfo, sizeof(proxyInfo)) == TRUE;
if (bResult)
::MessageBox(NULL, "The proxy settings was updated sucsessfully", "Proxy", MB_OK | MB_ICONINFORMATION);
return bResult;
}
bool CProxySetting::GetHttpProxy(CString& s)
{
char buffer[128];
DWORD dwSize = 128;
INTERNET_PROXY_INFO* pProxyInfo = (INTERNET_PROXY_INFO*) buffer;
bool bResult = ::InternetQueryOption(NULL, INTERNET_OPTION_PROXY, &buffer, &dwSize)==TRUE;
if (bResult) {
if (pProxyInfo->dwAccessType == INTERNET_OPEN_TYPE_DIRECT)
s = "" ;
else {
s = pProxyInfo->lpszProxy;
int found = s.Find("http=");
if (found >= 0)
s.Delete(found, 5);
}
}
return bResult;
}