- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用层的客户-服务器模式.doc
实验一 应用层的客户-服务器模式
实验目的
了解基于Socket的C/S编程的概念
了解winsock中函数的用法及其参数的含义
掌握使用Socket开发程序的方法
掌握C/S模式下网络通信的工作流程
实验原理
2.1客户机-服务器模型
网络应用的标准模型是客户/服务器模型 (Client/Server模型,简称C/S模型)。由客户程序和服务器程序共同完成一个应用任务,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户端和服务器。
一般发起通信请求的程序被称为客户端,用户一般是通过客户端软件来访问某个服务。客户端应用程序通过与服务器建立连接,发送请求,然后接收服务器返回的内容。
服务器则一般是等待并处理客户端请求的应用程序。它通常由系统执行,在系统生存期间一直存在,等待客户的请求,并且在接收到客户端的请求后,根据请求向客户端返回合适的内容。客户机与服务器之间的通信过程如图1所示:
图1 客户端和服务器之间的通信过程
这种C/S的通信模型用途十分广泛,现在的大多数网络程序都使用了这种类型。在服务器端,根据服务器请求方式的不同,服务器可以分为两种类型。
(1) 循环服务器
这种模式是在同一时间只能处理一个客户端的请求。服务器在接收到客户端的请求后,处理这个请求,在处理完毕后才继续等待下一个请求的到来。如果在处理过程中有新的客户请求,将只能等待。这种模式通常只能用于处理速度较快,处理逻辑比较简单的服务器程序的开发,如Linux的时间服务器。
(2) 并发服务器
这种模式在同一时间可以处理多个请求,服务器会建立多个处理客户端的请求的进程或者线程,服务器接收到一个客户端请求后,将按照一定的算法选择或者创建一个进程或者线程来处理这个客户端请求,而服务器可以立即返回等待下一个客户端请求的到来。显然这种处理模式可以尽量避免单处理模式中的对客户端请求响应不及时的问题,但是这种模式需要占用较多的CPU处理时间和较多的系统资源,并且需要处理多个进程或者线程之间的通信和数据共享,编程具有一定的复杂性。通常使用这种模式处理比较耗时或者对速度要求较高的服务,如文件传输服务(FTP)等。
从上面的介绍中可以看出以下一个重要特点:
服务器在交互开始前已运行,并且通常持续不断地接受请求、发送响应。而客户机是发出请求并等待响应的任何程序,它通常在有限次的使用服务器后终止。
一般来说,服务器的执行过程如下:
(1) 打开通信信道(申请一下套接字),通知本地主机在某一知名端口接收客户机请求。
(2) 等候新的客户机请求到达该端口。
(3) 接收到请求,启动一个新的进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信链路。
(4) 回到第二步,继续等待客户机请求。
(5) 如果不愿响应客户机请求,关闭服务器进程。
2.2 网络通信基础知识和winsock相关的数据结构(这是winsock1.1版本):
2.2.1 IP 地址和端口的介绍
Internet 协议地址简称IP 地址,它是整个网络协议的核心。在不同的网络或相同的网络中的结点进行通信时,需要使用IP 地址。也就是说,Internet 网上的计算设备或主机都分配有一个惟一的地址,叫IP 地址。一个IP 地址长为32 比特,分为4个字节,比如:IP 地0110111100000110一般都是用二进制数位模式表示IP 地址,它是非常难以识记的,为容易阅读和理解,通常将IP 地址以4 个句点分隔开的十进制数字表示,称为点分十进制表示法( dotted decimal notation )。上面的IP 地址用这种方法表示为。
端口(port) 是标志传输层协议和应用程序之间的数据接口,在客户端和服务器端通信时,真正完成通信功能的不是两台计算机,而是两台计算机上的进程。如果要标识具体的进程,需要引入新的地址空间,这是端口。定义端口是为了解决与多个应用程序同时进行通信的问题。每个端口有一个16 位的标志符,称为端口号。所以端口号的应用范围在0-65536之间,但1024 以下的端口号被标准服务保留,因此在这个协议中可以用到的端口号的范围在1024-65536 之间。
2.2.2 IP地址和服务端口(PORT)的数据结构
struct sockaddr_in
{
short sin_family;//必须设为AF_INET,在使用TCP/IP协议族时。
u_short sin_port;//通信端口
struct in_addr sin_addr;//用于把IP地址保存为一个4字节的整数
//点分十进制表示,从
文档评论(0)