第9章网络编程要点分析.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 网络编程 9.1 聊天室程序 9.1.1聊天室应用程序功能介绍 服务器应用程序 客户端应用程序 9.1.2 程序开发步骤 介绍CStocket程序设计基础 使用CStocket类开发聊天室客户端应用程序 使用CStocket类开发聊天室服务器端应用程序 9.2 CSocket程序设计基础 在VC++中,利用WinSock编程有两种途径 通过WinSock API进行编程 利用MFC提供的WinSock类编程 9.2.1 计算机名、IP地址和端口 1. IP地址 Internet中的每一台主机都分配有一个唯一的32位二进制地址,该地址称为IP地址。 每个IP地址是由网络号和主机号两部分组成的。 IP地址的32位的二进制数,由四个字节组成,并分成四组,每组一个字节(8位),各组之间用一个小圆点号“.”分开。如:某计算机的IP地址可表示为:100101001100000 为了便于记忆,通常把每一组二进制数转换成相应的十进制数;这台主机的IP地址就是40。(8商都dns主机的地址) 9.2.2 WinSock和MFC 通信的基础是套接口(Socket),一个Socket是通信的一端 在这一端上用户可以找到与其对应的名字 一个正在被使用的套接口都有它的类型和与其相关的进程 流式套接口 提供了双向的、有序的、无重复并且无记录边界的数据流服务 数据报套接口 支持双向的数据流,但并不保证是可靠、有序和无重复的 一个数据报套接口接收信息的进程有可能发现信息重复了,或者和发出时的顺序不同 它保留了记录边界 可以用来向许多系统支持的网络发送广播数据包 MFC中提供了两个类用于WinSock编程:CAsyncSocket类和CSocket类 CAsyncSocket类 对Windows Sockets API进行了封装 提供基于异步通信的套接口封装功能 适用于需要充分利用Winsock API的灵活性,并使用回调函数来响应网络事件的情况 CSocket类 是CAsyncSocket类的派生类,该类对WinSock类进行了更多的封装,提供更多高层次的功能 利用CArchive类进行数据传输,从而使利用该类进行数据传输的过程与MFC的串行化一致 该类通过对Windows消息的处理来实现阻塞,从而实现基于CAchive的同步数据传输 注意: 在编写网络程序时,所创建的新类必须声明自己是CAsyncSocket或CSocket类的子类 原因是想捕获激活的事件 有一系列函数可以调用,以响应每一个事件,这些函数使用同样的定义,只是函数名有些差别 9.2.3 WinSock的工作原理 WinSock的工作方式为服务器-客户模式 有面向连接和无连接两种通信方式 有连接的通信 使用的是TCP协议,通过TCP协议可以与指定IP地址的主机建立连接,同时利用建立的连接可以双向交换数据 采用流的方式进行数据传输,要求客户必须指定服务器的地址 能保证通过网络进行数据传输的可靠性 WinSock进行有连接的通信模型 在有客户连接请求之前,服务器线程或进程将会阻塞,直到有客户程序成功地连接到了服务器上后才继续往下运行 在单线程的应用程序中,服务器线程或进程阻塞就意味着整个应用程序都无法继续运行,可以选择多线程的方式来解决 解决阻塞问题的方案 利用产生和响应网络事件的方式来解决阻塞问题 服务器在等待客户请求时并不进入阻塞状态,而是直接返回,进入侦听网络事件的循环中 当需要读客户数据时,同样也并不陷入阻塞状态,而是直接返回到消息循环中 利用WinSock进行无连接的通信 使用的是UDP协议,通过UDP协议可以往指定IP地址的主机发送数据,同时也可以从指定IP地址的主机接收数据 发送和接收方处于相同的地位,没有主次之分 发送数据 int CAsyncSocket::SendTo( cont void * lpBuf, int nBufLen, UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlag = 0); 接收数据 int CAsyncSocket::ReceiveFrom( void * lpBuf, int nBufLen, CString rSocketAddress UINT rSocketPort, int nFlags = 0); 利用UDP协议发送和接收都可以是双向的,就是

文档评论(0)

挺进公司 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档