第七章 传输层.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.4Winsock编程初步 7.4.1 、概述 每种网络都有自己的"语言",Internet上的"语言"就是TCP/IP网络通讯协议。Internet是在UNIX系统上发展起来的,在UNIX上有许多成熟的编程接口,其中最通用的是一种叫做Sockets的接口。在1991年前后,许多网络软件商都在加紧研制Windows下的TCP/IP通讯组件,为了能使这些组件有一定的标准,降低开发难度,他们决定为Windows开发一套标准的、通用的TCP/IP编程接口,并使之类似于UNIX下的 Sockets。 7.4.1Winsock 概述 这一接口迅速被所有的软件商所接受,甚至包括icrosoft与IBM。到1994年,它被正式制定成一项标准,称为WindowsSockets或称WINSOCK,并通过C语言的动态连结库方式提供给用户及软件开发者。我们现在看到的Windows下的Internet软件都是在WINSOCK的基础下开发的。随着Windows 95的推出,WINSOCK已经被正式集成到了Windows系统中,同时包括了16位与32位的编程接口。而WINSOCK的开发工具也可以在 Borland C++4.0、Visual C++这些C编译器中找到,主要由一个叫winsock.h的头文件和动态连接库winsock.dll组成。 7.4.1Winsock 概述 最初,WINSOCK1.1版是专门为Internet设计的,现在的2.x版已经不再限于Internet和TCP/IP协议,它通过提供扩展的SPI编程接口,把自己的应用范围扩大到现存的和正在出现的各种网络和协议,包括PSTN、ISDN、无线网、所有的局域网协议、异步传输模式ATM等等;并且允许应用程序对所建立连接的可靠性、冗余度和带宽进行控制。所以,掌握了WINSOCK编程,就等于掌握了Windows环境下网络编程的一把钥匙。下面主要介绍一下在Internet上的编程方法。 7.4.2、WINSOCK的基本概念 Socket在英文中是插座的意思,在这里设计者实际上是暗指电话插座。因为在 Socket环境下编程很像是打电话的模拟,Internet的IP地址就是电话号码,要打电话,首先要有个电话插座,在程序中就是向系统申请一个Socket,以后两台机器上的程序"交谈"都是通过这个Socket来进行的。对程序员来说,也可以把Socket看成一个文件指针,只要向指针所指的文件读写数据,就可以实现双向通讯。 利用Sockets进行通讯,有两种主要的方式。第一种叫作流方式 (Stream Socket)也称面向连接方式。故名思义,在这种方式下,两个通讯的应用程序之间先要建立一种虚拟的连接。其过程好像客户机在给服务器打电话,只有服务器拿起了听筒,才能开始传输数据,这种方式对应的是TCP协议。第二种叫作数据报文方式(Datagram Socket),又称无连接方式,这时两台计算机像是把数据放在一封封信里通过网络寄给对方,信在传送的过程中有可能会残缺不全,而且,后发出的信也有可能会先收到,它对应的是UDP协议。流方式的特点是,通讯可靠,对数据有校验和重发的机制,通常用来作数据文件的传输如ftp、telnet等;数据报文方式由于取消了重发校验机制,能够达到较高的通讯速率,可以用作一些对数据可靠性要求不高的通讯,如实时的语音、图像转送、广播消息等。 7.4.3WINSOCK的编程特点 在网络通讯中,由于网络拥挤或一次发送的数据量过大等原因,经常会发生交换的数据在短时间内不能传送完,收发数据的函数因此不能返回,这种现象叫作阻塞。WINSOCK对有可能阻塞的函数提供了两种处理方式,阻塞和非阻塞方式。在阻塞方式下,收发数据的函数在被调用后一直要到传送完毕或者出错才能返回。在阻塞期间,被阻的函数会不断调用系统函数GetMessage( ) 来保持消息循环的正常进行。对于非阻塞方式,函数被调用后立即返回,当传送完成后由WINSOCK给程序发一个事先约定好的消息。 在编程时,应尽量使用非阻塞方式,因为在阻塞方式下,用户可能会在长时间的等待过程中试图关闭程序,因为消息循环还在起作用,所以程序的主窗口可以被关掉,这样当函数从WINSOCK的动态连接库中返回时,主程序已经从内存中删除,这显然是极其危险的。 7.4.4 WINSOCK中各种系统调用说明 1.socket ( ): 创建一个 Socket。 所有的通迅在建立之前都要创建一个Socket,该函数的功能与文件操作中的 fopen类似。函数调用格式: SOCKET Socket (int af, int type, int proctocol) af指adress family一般都填AF-INET (表示是在Internet

文档评论(0)

gpcjc1996 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档