- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于winsock技术编制HTTP代理服务器程序精要
基于winsock技术编制HTTP代理服务器程序
xxx
xxxxxxxxxxxxxxxx
摘 要:HTTP协议即超文本传输协议,是Internet上进行信息传输时使用最为广泛的一种非常简单的通信协议部分局域网对协议进行了限制,只允许用户通过HTTP协议访问外部网站。HTTP协议信息传输Windows下网络编程的规范-Windows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口已成为Windows网络编程的事实上的标准Windows Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。www对于每 一个上网的人都再熟悉不过了,www连接请求就是采用的http协议,所以我们在浏览网页,下载数据(也可采用ftp协议)是就是用http代理。它通常绑定在代理服务器的80、3128、8080等端口上HTTP协议即超文本传输协议,是Internet上进行信息传输时使用最为广泛的一种非常简单的通信协议。部分局域网对协议进行了限制,只允许用户通过HTTP协议访问外部网站。代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。在一般情况下,我们使用网络浏览器直接去连接其他Internet站点取得网络信息时,须送出Request信号来得到回答,然后对方再把信息以bit方式传送回来。
代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是必威体育精装版的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。
更重要的是:Proxy Server(代理服务器)是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层。Winsocket函数:
Windows的Socket函数有许多,?我没有做详细介绍,这里的函数都是简要说明其用途,?这里的主要目的是为了后面的三个应用服务。
函数说明:?
1.WSAStartup函数:初始化Winsock?
[声明]? int?WSAStarup(WORD?wVersionRequested,LPWSADATA?lpWSAData);?
[参数]? wVersionRequested?-?要求使用Winsock的最低版本号?
lpWSAData?-?Winsock的详细资料?
[返回值]? 当函数成功调用时返回0,失败时返回非0的值?
2.socket函数? 用于生成socket(soket?Descriptor)?
[声明]? SOCKET?socket(int?af,int?type,int?protocol);?
[参数]? af?-?地址家族(通常使用:AF_INET)?
type?-?socket的种类?
SOCK_STREAM?:?用于TCP协议?
SOCK_DGRAM?:?用于UDP协议?
protocol?-?所使用的协议?
[返回值]? 当函数成功调用时返回一个新的SOCKET(Socket?Descriptor);失败时返回INVALID_SOCKET.?
3.inet_addr函数:地址转换,?把A.B.C.D的IP地址转换为32位长整数?
[声明]? unsigned?long?inet_addr?(?const?char?FAR?*cp?);?
[参数]? cp?-?指向IP地址字符串的指针?
[返回值]? 当函数成功调用时返回用32位整数表示的IP地址;失败时返回INADDR_NONE.?
4.gethostbyname函数:从主机名获取主机信息.?
[声明]? struct?hostent?FAR?*?gethostbynam
文档评论(0)