




已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉大学毕业设计 论文 用纸 i 嵌入式 web 服务器 摘 要 linux 操作系统是一个开放源代码的免费操作系统 它不仅有安全 稳定 成本 低的特点 而且很少发现有病毒传播 近年来 随着 linux 操作系统在我国的不断普 及 越来越多的服务器 工作站和个人电脑开始使用 linux 软件 基于 linux 具有稳 定 可靠 安全和强大的网络功能这些优点 本文选择在 linux 环境下实现一个 web 服务器 本文研究了 http 协议实现了数据的传输 阐述了采用 linux 套接字编程接口的方 法实现 http 协议的方案 详细分析了客户端和服务器之间的通信过程 本文在 linux 系统下实现一个 web 服务器程序 在局域网内 将此服务器程序在一台计算机上运行 使网内其它计算机访问这台服务器时 实现客户端和服务器以 http 协议进行请求和响 应的功能 此外还编写了 web 浏览器 web 服务器实现的全部代码采用 linux 下的 c 语言编程 可进一步提高系统运行 速度 并且增强了系统的安全性和可靠性 web 浏览器代码是采用 c 和 qt 的编程 界面设计是用 qt 实现的 关键词 关键词 嵌入式 linux 操作系统 http 协议 web 服务器 socket internet qt 武汉大学毕业设计 论文 用纸 ii embedded web server abstract the linux operate system is a free operate system which opens asource code not only it has characteristics such as safe stability and the low cost but also it seldom dissemiantes the virus in recent years along with the linux operatesystem in our country makes widely available continuously more and more servers work stations and personal computer start using linux software as the linux operting system has the function of stable reliable safe and formidable network to realize a web server in the linux environment is the best choice this paper introduces design and implement of web server in linux operating system the problem of how to realize data transmission by http protocol which based on linux is valuable to research this paper expounds realizing scheme for http protocol and gives out protocol communication module wih the method of linux socket programming intefface and analyze the communication process between client and server this paper realizes a web server procedure in linux operating sysytem in the local area network if this server procedure runs on a computer which can realizes the function that the client requests and the server responds by http agreement when other computers in the net visit it the complete code of the web server s realization uses the c language programming in linux operating system which may further enhance the running rate and strengthened the security and reliability of the system the code of web browser srealization uses the c language and qt key words embedded linux operating system http protocol web server socket 武汉大学毕业设计 论文 用纸 iii 目 录 摘 要 i abstract ii 1 绪论 1 1 1 课题的研究意义 1 1 2 国内外研究现状 1 1 3 论文研究内容和主要工作 2 2 相关理论与知识 3 2 1 linux 操作系统简介 3 2 2 web 服务器的概念 3 2 3 web 服务器基本构架 4 2 3 1 web 服务器和浏览器 4 2 3 2 web 页面 6 2 4 web 系统的基本原理是请求 响应 6 2 5 web b s 的通信 7 2 5 1 分析请求 8 2 5 2 构造响应 8 武汉大学毕业设计 论文 用纸 iv 2 6 linux 下 socket 网络编程基础知识 9 2 6 1 socket 简介 9 2 6 2 socket 的定义 9 2 6 3 socket 结构体 10 2 6 4 socket 函数库 10 2 6 5 socket 编程的基本过程 11 2 7 http 协议 12 2 7 1 http url 12 2 7 2 http 请求 12 2 7 3 http 响应 13 2 7 4 http 消息报头 13 3 web 服务器的设计思路与方案 17 3 1 web 服务器的模型 17 3 2 web 服务器如何工作 17 3 3 web 服务器的设计思路 17 3 3 1 web 服务器的设计思路 17 3 3 2 web 服务器的功能 18 3 3 3 web 服务器的功能模块图 18 3 4 web 服务器的设计方案 19 武汉大学毕业设计 论文 用纸 v 3 4 1 web 服务器的工作流程 19 3 4 2 web 服务器的核心设计思想 20 3 4 3 总体设计的关键点 20 4 linux 下 web 服务器的设计与实现 21 4 1 客户端与服务器建立连接 21 4 1 1 基本概念 21 4 1 2 建立一个 socket 21 4 1 3 定义程序 socket 的使用 22 4 i 4 使用配置 sockct 22 4 1 5 连接 socket 23 4 2 客户端和服务器端之间的请求响应过程 24 4 2 1 整体流程分析 24 4 2 2 服务器接受请求 25 4 2 3 服务器处理客户端的请求并作出响应 25 4 3 linux 下 web 服务器的运行与应用 29 5 web 服务器的实现 31 5 1 客户端与服务器建立请求 31 6 总结 33 武汉大学毕业设计 论文 用纸 vi 6 1 设计内容总结 33 6 2 设计结论 33 参考文献 35 致 谢 37 外文文献 38 中文翻译 48 武汉大学毕业设计 论文 用纸 1 1 绪论 1 1 课题的研究意义 internet 的迅猛发展 传统的 client server 体系结构 客户机 服务器 渐渐 的在某些方面显示出它的局限性 browser server 结构 浏览器 服务器 的出现恰恰 弥补了这种缺陷 b s 方式已成为一种时尚 大部分网络应用系统都是以这种 b s 方 式与网络用户交换信息 b s 的基础是客户端要有一个浏览器程序 服务器端要有一 个与之对应的 web 服务器 显然 web 服务器在 b s 方式下起着决定性的作用 因此 一般互联网站都采用功能强大的通用 web 服务器 随着网络各个核心部分业务量的提高 其访问量和数据流量快速增长 处理能力 和计算强度也相应增大 使得单一设备根本无法承担 而且许多企业级应用系统的应 用请求具有突发性和紧急性的特点 当应用访问急剧上升时 容易造成网络瓶颈 解 决这一问题的办法是采用多台嵌入式 web 服务器为一个应用服务 集群负载均衡机制 就是为解决多个网络设备之间实现合理的业务量分配而提出的 1 2 国内外研究现状 目前在市场上有 20 到 30 种 web 应用服务器 每种服务器在实现对象组件支持 分布式计算 部署的速度和易用程度上采取了不同方式 目前市场上主流 web 服务器主要有以下几种产品 1 apache 由 sun 公司开发的 apache 服务器可以运行在包括 linux 等多种系统平台 之上 apache 支持许多特性 大部分通过编译的模块实现 如很有用的 url 重写 定 制日志文件以及过滤支持等 2 zeus webserver3 3 8 服务器 zeus 服务器在 smp symmetric multi processing 的简称 意为对称多处理系统 内有许多紧耦合多处理器 这种系统的最大特点就是 共享所有资源 环境下有优秀的可伸缩性 并实现了常见的特性集合 如访问控制 动态内容产生和安全等 3 iplanet enterprise edition 4 1 netscape 公司开发的 iplanet 具有现今高性 能 web 服务器的特性 如具有很高的可靠性 可用性 可维护性 系统高度可扩展性 等特点 相对其它 web 服务器 iplanet 还提供更多的 java 功能 4 aolserver 3 3 1 aol 公司开发的 aolserver 3 3 1 是一个多线程 可升级和扩 展的 web 服务器 5 roxen webserver 2 1 31 在 roxen 中可以使用 rxml 语言生成动态网页内容 rxml 是函数形式的服务器端 xml 脚本语言 它由 roxen 服务器解析并执行 6 jigsaw 它由 www 组织 w3c 开发 w3c 组织负责研究和规定网络协议的标准 如 http 它使用 java 语言开发 是成功的面向对象 功能全面的服务器 因为 jigsaw 武汉大学毕业设计 论文 用纸 2 不受测试平台的限制 所以 jigsaw 是一个具有活力的 拥有无限潜能的优秀 web 服务 器 在嵌入式系统的应用中 由于 htmi 语言的标准统一性 只要在设备里建立一个 微型 web 服务器 人们就可以使用现有的 web 浏览器与该设备进行双向交互 接收或 发送信息 它为我们管理 控制和监测各种各样的设备提供了一个很好的途径 只要 设备接入了 internet 我们就可以在世界上的任何地方十分方便地控制 操纵那些配 备有微型 web 服务器的设备 在 internet 上为了发布信息 用户必须运行 web 服务器程序 但现成的服务器程 序有时候不能满足所有人的要求 所以可以动手开发一个自己的 web 服务器程序 其 功能就可由设计者定制的功能和需求决定了 1 3 论文研究内容和主要工作 本次设计就是需要完成一个简易的 web 服务器的设计 实现 web 服务器基本功能 页面访问请求响应 html 文件的解析以及数据发送 所以在完成设计之前 必须先了 解 web 服务器设计的原理与结构 一般来说 web 服务器通常由以下几个部分组成 1 服务器初始化部分 这部分 主要完成 web 服务器的初始化工作 如建立守护进程 创建 tcp 套接字 绑定端口 将 tcp 套接字转换成侦听套接字 进入循环结构 等待接收用户浏览器连接 2 接收 客户端请求 由于客户端请求以文本行的方式实现 所以服务器一般也以文本行为单 位接收 3 解析客户端请求 这部分工作比较复杂 需要解析出请求的方法 url 目 标 可选的查询信息及表单信息 如果请求方法为 head 则简单地返回响应首部即可 如果方法是 get 则首先返回响应首部 然后将客户端请求的 url 目标文件从服务器 磁盘上读出 再发送给客户端 4 发送响应信息之后 关闭与客户机的连接 武汉大学毕业设计 论文 用纸 3 2 相关理论与知识 2 1 linux 操作系统简介 简单点说 linux 是一套免费使用和自由传播的类 unix 操作系统 是一个基于 可移植操作系统接口和 unix 的多用户 多任务 支持多线程和多 cpu 的操作系统 同 事它能运行一些主要的的 unix 工具软件 网络协议和应用程序 它还支持 64 和 32 位 硬件 linux 是一个性能稳定的多用户网络操作系统 继承了 unix 以网络为核心的设 计思想 它是由全世界成千上万的程序员设计与实现的 是一个不受任何商品化软件 版权制约 全世界都能够自由使用的 unix 兼容产品 linux 模块化的设计结构 使它既能在廉价的 pc 机上实现 unix 特性 也能在价 格高昂的工作站上运行 具备多任务及多用户能力 linux 系统软件不仅仅包括完整 的 linux 操作系统 还包括了高级语言编译器 文本编辑器 等应用软件 另外它还 包括图形用户界面 就像 windowsnt 一样 我们能够使用窗口 菜单和图标进行操作 linux 的优点 可靠 稳定 安全和强大的网络功能 在一些软件的支持下 能 够实现 www ftp dhcp e mail dns 等服务 利用 iptables ipchains 构建 nat 和 功能比较全面的防火墙 2 2 web 服务器的概念 www 是 world wide web 环球信息网 的缩写 也可以简称为 web 中文名字 为 万维网 www world wide web 是一种建立在 internet 上的全球性的 交 互的 动态 多平台 分布式 图形信息系统 它只是建立在 internet 上的一种网络 服务 它的开发最初是为了在科学家之间共享成果 科学家们可以将科研成果以图文 形式方在网上进行共享 它的最基本的概念就是 hypertext 超文本 如果你用过 windows 上的任何一种在线帮助系统你就会比较了解它的结构了 它起源于 1989 年 3 月 由欧洲量子物理实验室 cern the european laboratory for particle physics 所发展出来的主从结构分布式超媒体系统 通过万维网 人们只 要通过使用简单的方法 就可以很迅速方便地取得丰富的信息资料 由于用户在通过 web 浏览器访问信息资源的过程中 无需再关心一些技术性的细节 界面简单容易操 作 长期以来 人们只是通过传统的媒体 如电视 报纸 杂志和广播等 获得信息 但随着计算机网络的发展 人们想要获取信息 已不再满足于传统媒体那种单方面传 输和获取的方式 而希望有一种主观的选择性 现在 网络上提供各种类别的数据库 系统 如文献期刊 产业信息 气象信息 论文检索等等 由于计算机网络的发展 信息的获取变得非常及时 迅速和便捷 到了 1993 年 www 的技术有了突破性的 进展 它解决了远程信息服务中的文字显示 数据连接以及图像传递的问题 使得 武汉大学毕业设计 论文 用纸 4 www 成为 internet 上最为流行的信息传播方式 现在 web 服务器成为 internet 上最大的计算机群 可以说 web 为 internet 的普及迈出了开创性的一步 www 采用的是客户 服务器结构 其作用是整理和储存各种 www 资源 并响应客户端软 件的请求 把客户所需的资源传送到 windows nt unix 或 linux 等平台上 web 服务器传送 serves 页面使浏览器可以浏览 然而应用程序服务器提供的是 客户端应用程序可以调用 call 的方法 methods 确切一点 你可以说 web 服务器 专门处理 http 请求 request 但是应用程序服务器是通过很多协议来为应用程序提 供 serves 商业逻辑 business logic web 服务器 web server web 服务器可以解 析 handles http 协议 当 web 服务器接收到一个 http 请求 request 会返回一个 http 响应 response 例如送回一个 html 页面 为了处理一个请求 request web 服务器可以响应 response 一个静态页面或图片 进行页面跳转 redirect 或者把 动态响应 dynamic response 的产生委托 delegate 给一些其它的程序例如 cgi 脚本 jsp javaserver pages 脚本 servlets asp active server pages 脚本 服务器端 server side javascript 或者一些其它的服务器端 server side 技术 无论它们 译者注 脚本 的目的如何 这些服务器端 server side 的程序通常产生一个 html 的响应 response 来让浏览器可以浏览 要知道 web 服务器的代理模型 delegation model 非常简单 当一个请求 request 被送到 web 服务器里来时 它只单纯的把请求 request 传递给可以很好的 处理请求 request 的程序 译者注 服务器端脚本 web 服务器仅仅提供一个可以执 行服务器端 server side 程序和返回 程序所产生的 响应 response 的环境 而不会 超出职能范围 服务器端 server side 程序通常具有事务处理 transaction processing 数据库连接 database connectivity 和消息 messaging 等功能 2 3 web 服务器基本构架 web 应用的基本构架包括浏览器 网络和 web 服务器 浏览器向服务器请求 web 页 web 页可能包括由浏览器解释执行的客户端脚本 而且可以与浏览器 页内容和 页中包含的其他控件 java applet activex 控件和插件等 进行交互 用户向 web 页输入信息或通过超级链接导航到其它 web 页 与系统进行交互 改变系统的 业务 状态 2 3 1 web 服务器和浏览器 web 是基于请求和响应的系统 它是在 c s client server 结构的基础上发展 而来的 为了实现世界范围内的信息共享和发布 它规范了通讯协议 并规范 强化 client server 两端的系统功能 web 为用户在 internet 上查看文档提供了一个图形 武汉大学毕业设计 论文 用纸 5 化的 易于进入的界面 web 是一种基于超文本传输协议 hypertext transport potocol 简称 http 向计算机传送多媒体信息 如文本 图片 声音 视频 交互式 应用程序 的 internet 服务 同 c s 结构一样 web 由两部分构成 即 web 服务器端 和 web 浏览器端 web 服务器的主要功能是 创建 管理和维护 web 页面 对浏览器 的请求进行应答并返回 html 页 web 浏览器 browser 用来观看 web 资源的客户端 软件 主要负责请求 解释并显示 web 页 其工作过程见图 2 3 web 浏览器通常可以使用流行的 ie 或者其它的浏览器 服务器端的 tcp ip 协议 是操作系统内嵌的 其信息流符合 http 协议 服务器中的 http 引擎用来分析浏览器 的请求消息 并根据请求做出相应的动作 这些动作包括向浏览器发送一些静态页面 或调用一些应用服务程序 对于服务器中的静态 web 页面 可以使用一些常用软件如 frontpage 等制作 以备 web 服务器调用 而服务器中的应用服务程序则用来扩展服 务器所提供的服务 从图 l 中可以看出 微型 web 服务器的核心就是 http 引擎 http 协议是一种网络应用层的标准协议 web 浏览器和 web 服务器之间的通信都 是采用 http 协议来实现的 因此只要是符合 http 协议的通讯过程和数据内容 就可 以使用浏览器作为客户端进行连接和传递 图 2 3 web 工作原理 图 2 3 主要过程为 1 web 浏览器通过将 url 发给 web 服务器请求信息 2 web 服务器响应请求 并返回给客户机超文本标记语言 html 页面 3 web 浏览器对超文本标记语言 html 页面进行解释并显示 web 浏览器web 服务器 请求服务 index htm internet 或 intranet 服务器客户机 武汉大学毕业设计 论文 用纸 6 2 3 2 web 页面 web 页面是 web 系统实现发布 进行管理的主要对象 web 页面像一个大的容器 将要发布的文字 图片 声音 动画 视频等多种媒体信息封装到一起 供 web 系统 实现发布 进行管理 对于 web 系统而言 在众多的 web 页面中 有一个称为 web 主 页的页面 它是访问者浏览 web 系统的起点 每个 web 页面都具有唯一的地址 称为 统一资源定位符 url url 由存储此页面的计算机名和此页面的确切路径构成 web 页面是超文本标记语言 html 编写的 html 是一种嵌入式语言 通过在普 通文本中嵌入各种标记 tag 使普通文本具有了超级文本的功能 根据 web 页面的 内容 可将 web 页面分为三种类型 静态页面 动态页面 目录列表页面 2 4 web 系统的基本原理是请求 响应 客户端 浏览器接受用户输入的网页地址 url 并进行分析 从而得到网页的文 件名字和存放网页的计算机地址以及服务程序的端口号 首先根据计算机地址及端口 号与服务器建立连接 然后把网页名称及浏览器本身的有关信息按照一定的格式组织 起来 发给服务器 这就是 请求 比如用户输入 http kulin ts index html 从 而可知 1 计算机名称为 briup 根据这个名字能获知其计算机地址 2 端口号为 80 http 服务的默认端口号 3 页面的文件名为 index html 浏览器就与 briup 上端口号为 80 的服务程序建立连接 并把类似下面的数 据发过 作为服务 请求 get index htm http 1 1 accept image gif image x xbitmap application vnd ms powerpoint accept language ch ua pixels 800 600 ua color color16 ua os windows xp ua cpu p41 6 user agent mozilla 2 0 compatible msie3 01 window xp host briup connection keep alive 其中第一行说明了文件名称 index html 请求的类型 get 及浏览器支持的 协议版本 http 1 0 武汉大学毕业设计 论文 用纸 7 服务器端接受到请求后 对其进行分析 解析出网页的文件名称及其他信息 比如 请求的类型 处理要求等 根据网页的文件名称到磁盘上提取文件内容 把文件内容 和一些必要的说明信息打包后发给浏览器 然后断开连接 这就是 响应 浏览器 接到文件内容后就将其中的内容显示出来了 比如对于文件长度为 2559b 的 index html 来说 可以发送如下数据作为 响应 http 1 1 200 ok server briup httpsvr 1 1 date wed 20 may 2006 12 45 21 content type text html content length 2559 last modified sun 22 may 2006 14 21 50 上述数据分 2 大部分 第 1 部分为 头 其中 第 1 行是状态行 包括服务器执 行的 http 版本及本次响应的状态码 后 4 行分别说明了服务器名称 当前日期 数据 类型 数据长度 最后修改的日期和时间 第 2 部分为数据 体 是 请求 要求传 送的数据 它跟在 1 个空行之后 当然 客户端和服务器之间还可能有一些中间环节 比如代理服务器 网关 隧 道 等 在此我们先不予考虑 2 5 web b s 的通信 要完成 web 服务 除了网络通信链路的建立和拆除 之外至少还要有二方面的功 能 分折请求 和 构造响应 客户端与服务器交换数据之前 首先用 tcp ip 建立连接 客户端向服务器请求数据 服务器则向客户端响应并提供数据 客户端和 服务器以 http 协议进行请求和响应 服务器和客户端只能为一次事务处理建立并维持 连接 完成一次事务处理后便结束连接 每一个客户端向服务器发送请求均以方法 method 开始 后跟对象的 url 客户端 一般要在上述信息中补充所采用 http 协议的版本号 其后跟一个回车换行 crlf 字符 对 依据请求情况 浏览器可能在 crlf 后加上浏览器按特别的首部格式编码的信 息 完成后 浏览器给请求加上一个 crlf 还可依据请求情况 把一个实体 mime 格 式文档 加到整个请求之后 一个 http 方法实际上是一条命令 客户端用它来说明其 请求目的 常用的有 get head 和 post web 服务器收到请求并解析之后 以一个 http 响应消息响应客户端的请求 这个 响应消息通常以 http 协议版本号开始 后面是三位状态码和一个原因短语 reason phrase 其后是一个 crlf 再后是请求的信息 它被服务器以一种特殊的首部格式编 码 最后 服务器加上一个 crlf 其后还可以有一个可选实体 状态码是三位数 它描述了服务器理解和满足请求的情况 原因短语是状态代码的一个简短说明 http 武汉大学毕业设计 论文 用纸 8 协议版本号 状态代码 原因短语一起构成了状态行 上述分析不难看出 接收客户端请求 解析客户端请求 响应客户端请求 向客 户端回送请求的结果是 web 服务器所需完成的主要任务 web 服务器程序代码主要是 为了完成这几项任务 2 5 1 分析请求 如前文所述 请求 的第 1 行数据是最重要的 它的格式是 方法 资源地址 http 版本号 回车换行 方法 主要有 3 种 get 要求必须返回一定的内容 有时还必须根据 请求 的要求先对内容做一定 的处理 比如解压缩或根据时间进行过滤 head 处理办法和 get 完全相同 但要求只返回 头 而不可返回任何实质内容 体 post 用来处理网页的附属内容 比如 注解 数据回送等 作为简单的服务器 我们只考虑第一行 且只处理 get 请求 版本号不予理睬 2 5 2 构造响应 如前文所述 响应的第 1 行是状态行 非常重要 格式如下 http 版本号 状态码 状态文字说明 回车换行 版本号可取 http 1 1 状态码是 3 位数字 根据情况按表 2 1 所示代码取值 表 2 5 状态码值 代码特 征 含义举例 1 开头 的 2 开头 的 3 开头 的 4 开头 的 5 开头 的 保留未用 成功 需要进一步处 理 客户断错误 服务器端错误 比如 200 表示处理成功 比如 400 表示 请求 有错 404 表示找不到客户指定的 文件 作为简易的服务器 响应 可以只返回状态行和文件内容 即送回如下的内容 武汉大学毕业设计 论文 用纸 9 http 1 1 200 ok 状态行 一个空行 文件内容 文件内容 2 6 linux 下 socket 网络编程基础知识 本文所设计的 web 服务器是在 linux 操作系统下的 socket 编程实现 所用的函 数均来自 linux 下的 socket 函数库 客户端和服务器的连接也是用 socket 套接字来 实现的 所以 socket 网络编程是设计的基础 2 6 1 socket 简介 二十世纪八十年代初 美国国防部高级研究计划署让加利福尼亚大学在 unix 操作 系统下实现 tcp ip 协议 tcp ip 很快被集成到 unix 中 同时出现了许多成熟的 tcprip 应用程序接口 api 这个 api 成为 socket 接口 今天 socket 接口是 tcpfip 网络最为通用的 api 也是在 internet 上进行应用开发最为通用的 apilu ul socket 实际在计算机中提供了一个通信端口 可以通过这个端口与任何一个具 有 socket 接口的计算机通信 应用程序在网络上传输 接收的信息都通过这个 socket 接口来实现 在应用开发中就像使用文件句柄一样 可以对 socket 语句进行 读 写操作 我们将 socket 翻译为套接字 2 6 2 socket 的定义 网络的 socket 数据传输是一种特殊的 i o socker 也是一种文件描述符 socket 也具有一个类似于打开文件的函数调用 socket 该函数返回一个整型的 socket 描述符 随后的连接建立 数据传输等操作都是通过该 socket 实现的 常用 的 socket 类型有两种形式 流式 socket s x k stream 和数据报式 socket sock dgram 流式是一种面向连接的 socket 针对于面向连接的 tcp 服务应用 数据报式 socket 是一种无连接的 socket 对应于无连接的 udpsocket 务应用 2 6 3 socket 结构体 1 套接字结构 struct sockaddr in short int sin family 地址类型 af xxx af unix af inet 和 af ns unsiped short int sin port 16 位端口号 struct in addrsin addr 32 位 ip 地址 char sin zero 8l 保留 武汉大学毕业设计 论文 用纸 10 端口号以及 intcmet 地址使用的是网络字节顺序 需要通过函数 htons 转换 用这个数据结构可以轻松处理套接字地址的摹本元素 注意 sin zero 它被加 入到这个结构 并且长度和 struct sockaddr 一样 应该使用函数 bzer 或 memset 来全部置零 同时 这一重要的字节 一个指向 scekaddr in 结构体的指针也可以被 指向结构体 sockaddr 并且代替它 这样的话即使 sbocket 想要的是 srruct sockaddr 你仍然可以使用 struct sackaddr in 并且在最后转换 同时 注意 sin family 和 struct sockaddr 中的 sin family 致并能够设置为 af inet 最后 sin port 和 sin addr 必须是网络字节顺序 network byte ader 2 主机结构 struct hostent char h name 主机的正式名称 char h aliases 类别列表 int h addrtype 主机地址类型 af xxx int h length 主机地址长度 4 字节 32 位 char h addr list 主机 ip 地址列表 网络字节顺序 define h addr h addr list 0 h addr 是 h addr list 中的第一地址 2 6 4 socket 函数库 l 套接字函数 int socket int domain int type int protocol 函数 socket 创建一个套接字描述符 如果失败返回 nbsp l domain 为地址类 型 af xxx type 为套接字类型 sock stream tcp sock dgram udp sock raw ip icmp protocol 指定协议 0 为默认模式 2 绑定函数 int bind int sockfd struct sockaddr hostaddr int addrlen 函数 bind 将本地地址与套接字绑定在一起 成功返回 0 失败为 l 并设置全 局变量 ermo 为错误类型 eaddrinuser 此函数的三个参数分别为 1 sockfd 为 socket 调用返回的文件描述符 2 address 是指向包含有本机 ip 地址及端口号等信息的 sockaddr 类型的指针 它的类型是 struct sockaddr in 3 sin falnily 般为 af lnte 3 连接函数 int connect int sockfd struct sockaddr servaddr int addrlen 函数 connect 与服务器建立一个连接 成功返回 0 失败返回 l servaddr 为远程服务器套接字地址 包括服务器的 ip 地址和端口号 addlen 为地 址的长度 4 接受请求函数 int accept int sockfd struct sockaddr addr int addrlen 函数 accept 从 listen 的完成连接队列中接收一个连接 如果连接队列为空 则 该进程睡眠 5 监听函数 int listen int sockfd int backlog 函数 listen 将一个套接字转换为倾听套接字 执行成功返回 0 失败为一 1 backlog 设置请求队列的最大长度 武汉大学毕业设计 论文 用纸 11 6 写入函数 int write int fd char buf int len 读取函数 int read int fd char buf intlen 函数 read 和 write 从套接字读和写数据 成功返回数据量大小 否则返回 l buf 指定数据缓冲区 len 指定接收或发送的数据量大小 7 创建子进程函数 pid t fork void 在服务器端 一般在由 fork 函数生成的子进程来调用数据传输函数 fork 函数是拷贝父进程的内存映象来创建子进程 事实上它返回两个进程控制号 对于父 进程它返回子进程 id 对于子进程它返回 0 8 关闭连接函数 int close int sockfd 函数 close 关闭一个套接字描述符 成功返回 o 失败为 l 9 取本机地址函数 struct hostent gethostbyname const char hostname 函数 gethostbyname 查询指定的域名地址对应的 ip 地址 返回一个 hostent 结构的指 针 如果不成功返回 null 10 字节顺序转换函数 h 表示 host n 表示 network s 表示 short l 表示 long htons host to nelwork short htonl host to network long htohs network to host short ntom0 networkto host long 2 6 5 socket 编程的基本过程 利用 socket 编程 一般按照以下的基本过程 1 建立一个 socket 2 定义程序的 socket 使用 3 配置 socket 4 通过 socket 传输数据 5 通过 socket 接受数据 6 关闭 socket 2 7 http 协议 2 7 1 http url 掌握 http 虽然不是必须的 但是如果你知道它的工作原理 那么在学习 jsp 开发 中的某些知识就可以易如反掌了 http 超文本传输协议 是一个基于请求与响应模式的 无状态的 应用层的协 议 常基于 tcp 的连接方式 http1 1 版本中给出一种持续连接的机制 绝大多数的 web 开发 都是构建在 http 协议之上的 web 应用 http url url 是一种特殊类型的 uri 包含了用于查找某个资源的足够的信息 武汉大学毕业设计 论文 用纸 12 的格式如下 http host port abs path http 表示要通过 http 协议来定位网络资源 host 表示合法的 internet 主机域名 或者 ip 地址 port 指定一个端口号 为空则使用缺省端口 80 abs path 指定请求资 源的 uri 如果 url 中没有给出 abs path 那么当它作为请求 uri 时 必须以 的 形式给出 通常这个工作 浏览器自动帮我们完成 2 7 2 http 请求 http 请求由三部分组成 分别是 请求行 消息报头 请求正文 1 请求行以一个方法符号开头 以空格分开 后面跟着请求的 uri 和协议的版本 格 式如下 method request uri http version crlf 其中 method 表示请求方法 request uri 是一个统一资源标识符 http version 表示请求的 http 协议版本 crlf 表示回车和换行 除了作为结尾的 crlf 外 不允许 出现单独的 cr 或 lf 字符 请求方法 所有方法全为大写 有多种 各个方法的解释如下 get 请求获取 request uri 所标识的资源 post 在 request uri 所标识的资源后附加新的数据 head 请求获取由 request uri 所标识的资源的响应消息报头 put 请求服务器存储一个资源 并用 request uri 作为其标识 delete 请求服务器删除 request uri 所标识的资源 trace 请求服务器回送收到的请求信息 主要用于测试或诊断 connect 保留将来使用 options 请求查询服务器的性能 或者查询与资源相关的选项和需求 应用举例 get 方法 在浏览器的地址栏中输入网址的方式访问网页时 浏览器采用 get 方 法向服务器获取资源 eg get form html http 1 1 crlf post 方法要求被请求服务器接受附在请求后面的数据 常用于提交表单 2 7 3 http 响应 http 响应也是由三个部分组成 分别是 状态行 消息报头 响应正文 1 状态行格式如下 http version status code reason phrase crlf 其中 http version 表示服务器 http 协议的版本 status code 表示服务器发回的响 应状态代码 reason phrase 表示状态代码的文本描述 状态代码有三位数字组成 第一个数字定义了响应的类别 且有五种可能取值 1xx 指示信息 表示请求已接收 继续处理 2xx 成功 表示请求已被成功接收 理解 接受 3xx 重定向 要完成请求必须进行更进一步的操作 4xx 客户端错误 请求有语法错误或请求无法实现 武汉大学毕业设计 论文 用纸 13 5xx 服务器端错误 服务器未能实现合法的请求 常见状态代码 状态描述 说明 200 ok 客户端请求成功 400 bad request 客户端请求有语法错误 不能被服务器所理解 401 unauthorized 请求未经授权 这个状态代码必须和 www authenticate 报头域一起使用 403 forbidden 服务器收到请求 但是拒绝提供服务 404 not found 请求资源不存在 eg 输入了错误的 url 500 internal server error 服务器发生不可预期的错误 503 server unavailable 服务器当前不能处理客户端的请求 一段时间后 可能 恢复正常 2 7 4 http 消息报头 http 消息由客户端到服务器的请求和服务器到客户端的响应组成 请求消息和响 应消息都是由开始行 对于请求消息 开始行就是请求行 对于响应消息 开始行就 是状态行 消息报头 可选 空行 只有 crlf 的行 消息正文 可选 组成 http 消息报头包括普通报头 请求报头 响应报头 实体报头 每一个报头域都 是由名字 空格 值 组成 消息报头域的名字是大小写无关的 1 普通报头 在普通报头中 有少数报头域用于所有的请求和响应消息 但并不用于被传输的实体 只用于传输的消息 eg cache control 用于指定缓存指令 缓存指令是单向的 响应中出现的缓存指令在 请求中未必会出现 且是独立的 一个消息的缓存指令不会影响另一个消息处理的缓 存机制 http1 0 使用的类似的报头域为 pragma 请求时的缓存指令包括 no cache 用于指示请求或响应消息不能缓存 no store max age max stale min fresh only if cached 响应时的缓存指令包括 public private no cache no store no transform must revalidate proxy revalidate max age s maxage eg 为了指示 ie 浏览器 客户端 不要缓存页面 服务器端的 jsp 程序可以编写如下 response sehheader cache control no cache response setheader pragma no cache 作用相当于上述代码 通常两者 合 用 这句代码将在发送的响应消息中设置普通报头域 cache control no cache date 普通报头域表示消息产生的日期和时间 connection 普通报头域允许发送指定连接的选项 例如指定连接是连续 或者指定 close 选项 通知服务器 在响应完成后 关闭连接 2 请求报头 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息 常用的请求报头 accept 武汉大学毕业设计 论文 用纸 14 accept 请求报头域用于指定客户端接受哪些类型的信息 eg accept image gif 表明客户端希望接受 gif 图象格式的资源 accept text html 表明客户端希望接受 html 文本 accept charset accept charset 请求报头域用于指定客户端接受的字符集 eg accept charset iso 8859 1 gb2312 如果在请求消息中没有设置这个域 缺省是任何字符集 都可以接受 accept encoding accept encoding 请求报头域类似于 accept 但是它是用于指定可接受的内容编码 eg accept encoding gzip deflate 如果请求消息
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 普外引流管的护理
- 消防监控室半年度工作总结
- 幼师岗位培训心态
- 辽宁省大连市2026届英语九上期末复习检测试题含解析
- 食堂员工防疫培训
- 副职领导年度工作总结
- 2026届惠州市重点中学九年级化学第一学期期中质量检测模拟试题含解析
- 河北省秦皇岛市2026届化学九年级第一学期期中监测模拟试题含解析
- 2026届山西省朔州市名校英语九年级第一学期期末教学质量检测试题含解析
- 部编人教版四年级语文下册《习作:我的动物朋友》示范教学课件
- 2025年全国青少禁毒知识竞赛题库(答案+解析)
- 2024年成人高考成考(专升本)大学语文试题及解答参考
- 模切机保养管理办法
- 抑郁症病例分析报告
- 男人健康饮食管理方案
- 《老年冠心病慢病管理指南(2024版)》解读
- 中学烧伤教学课件
- 雨污分流管道检测与修复施工方案与技术措施
- 瑶族少数民族文化介绍
- 中国真空杯行业发展分析及发展趋势预测与投资风险研究报告2025-2028版
- 军训遇雨活动方案
评论
0/150
提交评论