- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
前言 要实现网络编程,有多种方法: 通过WinSock、所用命名管道和邮箱、使用RPC(Remote Procedure Call)等均可以实现在网络上的通信。 本讲将介绍利用WinSock编程的两种途径: 一种是通过WinSock API 另一种是通过MFC 提供的WinSock类,即 CAsyncSocket和CSocket Windows Socket编程原理 Socket概述 Socket简介 Windows Socket Winsock1.1基本API Winsock2.0 CAsyncSocket CSocket 什么是socket? 应用程序与网络之间的接口 应用程序创建socket socket 类型 决定了通信的类型 可靠的 vs. 尽最大努力的 面向连接的 vs. 无连接的 一旦socket配置完成,应用程序就可以 把数据传给socket,从而进行网络传输 从socket接收数据(其他主机通过网络发送过来的) Socket在计算机中提供了一个通信接口,可以通过这个接口与任何一个具有Socket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。 Socket在协议栈中的位置 Socket到Socket的通信 Windows Socket(1) Windows Socket 是从 Berkeley Socket扩展而来的,其在继承 Berkeley Socket的基础上,又进行了新的扩充。这些扩充主要是提供了一些异步函数,并增加了符合Windows消息驱动特性的网络事件异步选择机制 Windows socket的版本 Winsock1.1 Winsock2.0 Windows Socket(2) Winsock的实现方式 Winsock: C-Based API, 与Unix C API类似 CAsyncSocket: 对Winsock API的简单C++封装 CSocket: 对Socket的高层抽象 (自动处理字节顺序转换等) 对象串行化 CSocketFile CArchive 端口 每个主机有65,536个端口 一些端口被预留,用于特定的应用程序 20,21: FTP 23: Telnet 80: HTTP 参考RFC 1700 (大约1024个端口被预留) TCP/IP约定:0—1023为保留端口号,标准应用服务使用;1024以上是自由端口号,用户应用服务使用 IP地址、端口和Socket 类似公寓和邮箱 你是应用程序 你的公寓地址是地址 你的邮箱是端口 邮局是网络 Socket是使你能够使用邮箱的钥匙(假设发出去的信是由你放入邮箱的) Script: Socket(48)=IP地址(32)+端口(16) TCP/IP应用服务工作原理 采用客户机/服务器模式 服务器端启动守护进程,等待客户端的请求; 服务器对应客户端的请求,派生子进程与客户进程进行数据通信,提供服务。 服务器拥有全局公认的Socket ,接收任何客户端的请求。 Socket工作原理 Socket的系统调用库函数 1、创建套接字 Sockid=Socket(af,type,protocol) 2、建立地址和套接字的联系 bind(sockid, local addr, addrlen) 3、服务器端侦听客户端的请求 listen( Sockid ,quenlen) 4、建立服务器/客户端的连接 (面向连接TCP) 客户端请求连接 Connect(sockid, destaddr, addrlen) 服务器端等待从编号为Sockid的Socket上接收客户连接请求 newsockid=accept(Sockid,Clientaddr, paddrlen) 5、发送/接收数据 面向连接:send(sockid, buff, bufflen) recv( ) 面向无连接:sendto(sockid,buff,…,addrlen) recvfrom( ) 6、释放套接字 close(sockid) API的使用方法图示 分身有术 被动参与者 step 1: listen (监听连接请求) step 3: accept (接受连接请求) step 4: 数据传输 被接受的连接工作在新的Socket上 旧Socket继续监听其他的主动参与者 主动参与者 step 2: 请求并建立连接 step 4: 数据传输 Internet地址数据结构 sin_family = AF_INET 选
您可能关注的文档
最近下载
- 牛奶过敏的诊断、管理和预防意见书(2024).pdf VIP
- 西安2初一新生分班(摸底)数学模拟考试(含答案).doc VIP
- 2025年新版人教版四年级上册英语 四上Unit 4 Helping in the community单元整体教学设计.pdf VIP
- 中国碳化钨项目创业投资方案.docx VIP
- 内能的利用的学案.doc VIP
- 建筑与市政工程防水通用规范试题(含答案).doc
- 《中国儿童生长激素使用情况研究》.pdf VIP
- 万华化学经营分析报告.docx VIP
- 2025年中国PVB中间膜项目商业计划书.docx VIP
- 政府间国际科技创新合作重点专项2017年第二批项目.doc VIP
文档评论(0)