- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]第14章 WinSock网络通信开发
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 14.3 面向连接通信开发 与无连接通信不同,面向连接通信要求两个通信的应用程序之间首先要建立一条连接链路,而后数据才能被正确接收和发送。面向连接通信的特点是通信可靠,对数据有重发和校验机制,通常用来做数据文件的传输如FTP,Telnet等。使用Socket进行面向连接通信开发时,需要创建流式套接字(SOCK_STREAM)。 14.3.1 Socket面向连接通信机制 在IP中,面向连接地通信是通过TCP/IP协议完成地,TCP提供两个计算机间可靠无误地数据传输。应用程序使用TCP通信时,在源计算机和目标计算机之间,会建立起一个虚拟连接。建立连接之后,计算机之间便能以双向字节流的方式进行数据交换。 与无连接通信不同,面向连接通信,必需有一方扮演服务器的角色,等待另一方(客户端)的连接请求。服务器方需要首先创建一个监听套接字,在此套接字上等待连接。当连接建立后会产生一个新的套接字用于与客户端通信。以CSocket类实现Socket通信为例,简单介绍一下面向连接通信的通信流程。 1.服务器端 面向连接通信服务器端的具体实现流程可表示如下: (1)创建监听Socket对象。初始化WinSock的动态连接库后,需要在服务器端建立一个监听的Socket,即使首先构造一个CSocket对象,而后通过调用Create函数创建一个流套接字。 (2)绑定监听Socket的端口。使用Bind函数为服务器端定义的这个监听的Socket指定一个地址及端口,这样客户端才知道要连接哪一个地址的哪个端口。 (3)进入监听状态。使用Listen函数使服务器端的Socket进入监听状态,并设定可以建立的最大连接数。 (4)接受用户的连接请求。服务器进入到监听模式后,便已经做好了可以接受客户端连接的准备了。下面就可以通过Accept函数来接受用户的连接请求。 (5)与客户端进行通信。Accept函数执行后,将新建一个通信Socket与客户端的Socket相通,原先的监听Socket继续进入监听状态,等待他人的连接要求。通信Socket就可以通过Read和Write函数与客户端进行通信。 (6)关闭服务。当要关闭服务器时,使用Close函数关闭监听套接字和通信套接字即可。 2.客户端 面向连接通信客户端网络连接的创建相对服务器端要简单,其具体实现流程可表示如下: (1)创建客户端Socket。初始化WinSock的动态连接库后,首先构造CSocket套接字对象,使用Creat函数创建套接字。与服务器端的Socket不同的是,客户端的Socket可以调用Bind函数,由自己来指定IP地址及端口号,也可以不调用Bind,而由Winsock来自动设定IP地址和端口。 (2)提出连接请求。客户端的Socket使用Connect函数来提出与服务器端的Socket建立连接的申请。 (3)与服务器通信。服务器端接受客户Socket的连接请求后,便可以通过Read和Write函数与服务器端进行通信。 (4)断开连接。使用Close函数关闭客户端Socket即可实现断开与服务器的连接。 14.3.2 主要功能函数介绍 在上节介绍了面向连接通信程序开发的基本流程和使用的Socket类相关的成员函数。其中大部分函数在前面已有详细介绍,本节将详细介绍一下面向连接通信特有的有关连接的几个函数的使用。 1. 监听函数Listen 服务器端的监听Socke通过调用Listen成员函数,使Socket处于监听状态,监听对方(客户端)的连接请求。Listen函数原型如下: 参数nConnectionBacklog为Socket同时可以接受的连接数,默认值为5,也是最大值。函数成功执行则返回一个非0值。 Listen函数的典型调用代码如下: 2. 连接函数Connect 客户端Socket通过调用Connect函数连接服务器,其原型如下: 两个参数分别为要连接的计算机(服务器)的IP地址和端口号。 Connect函数的典型调用代码如下: 当执行CSocket类的Connect函数时,在连接成功之前不会返回,即程序处于阻塞状态,只有成功连接或者出了故障不能进行连接才返回。 3. 接受连接函数Acceptt 服务端Socke通过调用Accept函数接受客户端连接请求。Accept函数的原型如下: 其中,参数rConnectedSocket为一个新的套接字,用于与连接方通信;参数lpSockAddr为SOCKADDR结构的指针,用于记录连接方(客户端)的IP地址信息;参数lpSockAddrLen则存储lpSockAddr信息的长度。 3. 接受连接函数Accept
您可能关注的文档
最近下载
- 2025-2026学年小学信息技术(信息科技)三年级上册湘科版(2024)教学设计合集.docx
- 2013年八年级上学期体育与健康教案全集.doc VIP
- 储能材料工程技术专业人才培养方案(高职).pdf
- 《信息技术》教案 项目7 信息素养与社会责任.docx VIP
- RBA6完整版本.0全套记录表单.pdf VIP
- 党总支委员分工及工作职责.docx VIP
- 基于PLC的大棚温度自动控制系统设计与实现.docx VIP
- 2024世少赛思维能力测评三年级地区选拔.pdf VIP
- 2025-2026学年华中师大版(2024)小学体育与健康三年级(全一册)教学设计(附目录P150).docx
- 2014实验室生物安全管理手册.doc VIP
文档评论(0)