用c语言使用socket编程来实现获取网页的代码,在这之前 我们需要搞清楚以下两个问题:
- 第一:如何与服务器通信?
- 第二:通信后该做些什么?
第一个问题是上一章的东西,也就是 网站服务器是 服务端,我们只需要写一个客户单和他进行通信即可。
第二个问题就是本节课重点了,如何通信,按照什么规则来通信? 接下来就为大家讲简单的说下 http协议(更详细的,可以点开左边的链接看看)。
http协议其实就是 浏览器和服务器之间传输数据的时候 所约定的一个 数据格式。
我们只要了解了这种格式,我们就可以模拟浏览器的行为,给服务端发送特定格式的内容,他就会返回给我们特定格式的内容。
那么,这个格式是怎么样的呢? 下面是一个最简单的请求格式
GET /index.php HTTP/1.0
host:www.csdn.com
我们发送上面的数据过去,服务器就会返回 index.php 这个页面给我们。
接下来我们详细说下 上面都是什么意思:
GET 这个 是表示 以什么方式请求,HTTP中还有很多其他的请求方式,常用的就 GET POST
GET 后面紧跟一个空格 然后 给出,要获取的资源的名称, /index.php 就表示获取网站服务器根目录下 index.php 执行后所产生的内容,我们也可以改成 GET / HTTP/1.0 这就表示获取默认首页的内容 。 GET /1.html HTTP/1.0 就是获取 服务器根目录下 1.html的内容,很容易理解吧。
接下来隔一个空格 跟上 HTTP/1.0 表示 http协议的版本,这个是固定的 。
第二行 host:www.csdn.com 用来指定 访问哪个主机。 大家都知道,一个服务器可以放很多个网站,每个网站有不同的域名,所以我们需要用这个host来指定 我们要访问的是哪个网站,这样 才能正确得访问到我们想访问的网站。
telnet工具
在win7下 telnet服务端和客户端都是默认没有的,所以我们需要自己来开启一下。
- 首先 打开 控制面板,点开 卸载程序;
- 点开 打开或关闭windows功能;
- 把telnet 客户端 勾上,点击确定。
- 最后打开命令行 输入 telnet回车 出现如下界面,表示成功了。
telnet 他是一个基于tcp/ip 协议的程序,为我们用户提供一个 与其他电脑通信的工具,我们可以使用他来和其他电脑进行连接通信。
开始->运行->输入telnet回车
我们这时就可以输入命令,来连接远程主机,比如我们这次是要连接CSDN 的服务器,
那么我们就输入
open www.csdn.com 80
然后回车。
open 是打开的意思 后面跟上 要打开那个主机 然后 后面跟上端口, web服务器默认使用的是80端口,所以 要加上80端口(不加端口 telnet默认是23端口)。
这就代表 我们已经和远程主机连接上了,就相当于我们上一章 客户端执行到 connect 函数 之后 就是要调用 send函数发送数据了,在这里 我们只需要按键盘输入到黑色窗口中 就会发送到服务端。
我们依次输入以下内容,(注意,不能按退格,输入错误了,就重新打开telnet,重新操作。)
GET /index.php HTTP/1.0
host: www.csdn.com
然后就会收到服务端返回的内容。
telnet是个非常好玩的工具,不仅可以用来测试http协议,还有发邮件的 smtp协议 收邮件的pop3协议,都可以的,理论上所有基于tcp的协议都可以模拟。