部分程序我已写好,可以通过不需要代理认证的http服务器,但公司里的http需要进行代理认证,我不知道代理这部分代码如何写,IE设置过代理地址后就可以上网了,我的程序就不行,我的机器是需要登录到域中的。。请各位指点,小弟特送二百分。
解决方案 »
- vc++怎么最方便画统计图和统计曲线?
- 请问如何用VC访问C++Builder编的paradox7.0库啊
- 托盘上弹菜单怎不能和别人软件一样,点别的地方自动消失?
- 编译的时候报这样的错 :mc200.obj : error LNK2001: unresolved external symbol __imp__ShellExecuteA@24
- bitmap的问题
- 头疼,如何修改虚拟端口?
- 请教。~
- AfxGetApp()返回的是什么???
- ADO Connection的问题
- 请问:为什么我的 CFile类和fopen都打不开带路径的文件
- 寻找以下COM电子书,提供者有分!
- 怎样弹出一个选择目录(不是文件)的对话框?
地址,代理接收到包后再转发出去,当然代理的机器要再INTERNET网络上.你的程序如要通过代理访问远程主机器,只需要将包信息发送给代理机器就可以了,
除了包头信息外,其余信息代理是不作处理的,具体格式可以参照http1.0协议,或者
你拦截一下IE发送的包的格式分析一下.不知道你想问的是否是这些,不过代理服务器也大致如此吧,希望对你有帮助
1、在不设置代理的情况下,Client发送的ip包首先由ip协议栈判断其目标Host是否在同一网段,如果不在同一网段,该ip包将被送往Client所在网段的网关(路由器),由网关进行转发(路由)到目标Host。
2、IE设置代理的情况下同volcary解释的一样。其实,此时HTTP代理就相当于连接你的Client所在网段与Internet之间的一个"网关。IE在设置代理和不设置代理的情况下,其发送的HTTP头的数据是不一样的,代理要对其进行相应的修改后再将其转发给目标主机。你的问题有两种解决办法:
1、不对你现有的程序进行任何的修改,修改你的Client的网络配置,将Http代理服务器的IP设为Client的网关即可!
2、同zheng017的建议一样,直接用CInternetSession,CHttpConnection
我不想用CInternetSession,CHttpConnection,想直接用Socket api实现,大家请指点指点,最好是给点代码参考参考
http://www.codeproject.com/internet/httptunneling.asp
代理服务器只开http代理需要要认证的,我的程序现在可以通过不需要认证的http代理,但不知道如何写和代理服务器认证的代码。请各位做过的,给点代码好吗,不要讲理论,理论谁都会。
或给些通讯协议。。
这种情况我也第一次遇到。
总的感觉是你必须和HTTP代理进行交互。获得将认证信息打包在HTTP头里。
代码没有编过,不过可能的话可以互相研究研究。
CInternetSession CIS= new CInternetSession("pstrAgentName".....);
//设置代理认证参数
//lpPassword 口令Buffer指针,
//lpUserName 用户名buffer指针
CIS.SetOption(INTERNET_OPTION_PROXY_PASSWORD,lpPassword,PasswordLength);
CIS.SetOption(INTERNET_OPTION_PROXY_USERNAME,lpUserName,UserNameLength);
//由CInternetSession对象创建CHttpConnection对象指针
CHttpConnection * CHC = CIS.GetHttpConnection(...);
CHttpFile * pFile = CHC.OpenRequest(....);
....
还请大家指点指点。。
这里有用户名和密码是连接在一起的还有用什么分隔符分开的。
-------------------------------------- -----------------------------------
CONNECT home.netscape.com:443 HTTP/1.0
User-agent: Mozilla/4.0
<<< empty line >>>
HTTP/1.0 407 Proxy auth required
Proxy-agent: Netscape-Proxy/1.1
Proxy-authenticate: ...
<<< empty line >>>
CONNECT home.netscape.com:443 HTTP/1.0
User-agent: Mozilla/4.0
Proxy-authorization: ...
<<< empty line >>>
HTTP/1.0 200 Connection established
Proxy-agent: Netscape-Proxy/1.1
<<< empty line >>>
<<< data tunneling to both directions begins >>>
我的代理是Msproxy....