- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CASyncSocket类和CSocket类编程.doc
CASyncSocket类和CSocket类编程
本文主要讲解以下内容
(1)CAsyncSocket类编程模式。
(2)CSocket类编程模式。
(3)CSocketFile类和CArchive类简介。
通过学习,可以掌握CAsyncSocket类和CSocket类的编程模式,了解CSocketFile类和
CArchive类。CAsyncSocket类逐个封装了Winsock函数,以前介绍过的Winsock函数在CAsyncSocket类
的成员函数中都可以找到它们对应的函数。一个CAsyncSocket对象就代表着一个Windows ? Socket,
使用这个类进行网络编程,就要求程序员对网络通信和Socket编程模式有相当的了解,因为程序员
要自己编写程序处理阻塞、字节顺序以及Unicode与MBCS之间的转换等问题。
为使程序员可以更方便地编写Socket程序,MFC又给出了CSocket类。CSocket类是CAsyncSocket
类的派生类,它在继承了CAsyncSocket类的所有函数的同时提供了比CAsyncSocket类更高层的网络
编程接口。利用CSocket类和与之搭配的CSocketFile类以及CArchive类编写网络程序更加简单便利,
这主要是由于在CSocket类中提供了阻塞模式,因而可以利用CArchive进行同步操作。
提示:
在这里需要特别强调一下阻塞函数的概念,一个Socket可以处于“阻塞模式”或“非阻塞模式”,
当一个Socket处于“阻塞模式”时,它的阻塞函数(如send函数、recv函数之类的函数)直到其操
作完成后才会返回给程序控制权,而Socket的阻塞在此之前不能作其他操作。如果Socket处于“非
阻塞模式”(即异步模式),调用函数将会立即返回给程序控制权。
对于阻塞函数引起的错误,调用CAsyncSocket类的GetLastError成员函数时,将返回错误
WSAEWOULDBLOCK。而对于CSocket类,由于它有自己的阻塞管理,则不会出现该类错误代码,
CSocket类的许多成员函数都带有阻塞性质,但可以结合CArchive类处理。在Win32环境下,如果
要使用具有阻塞性质的Socket,应该将其放在单独的工作者线程中,充分利用多线程编程不干预其他
线程的便利。多线程编程的方法,可以使程序员充分利用CSocket类的阻塞管理方式,而不影响到用
户界面线程。
要在MFC中进行Socket编程,需要在应用程序类的Initlnstance中调用AfxSocketlnit初始化套
接字。如果使用AppWizard创建应用程序的基本框架时,选中了“WindowsSockets”复选框,那么将
自动添加初始化代码。
1 ? CAsyncSocket类编程模式
在用MFC进行Winsock编程时,使用CAsyncSocket类的优点为:可以轻松处理多个网络协议,
效率高,灵活性好;它的缺点则是需要程序员编写程序来处理诸如阻塞等情况,比较麻烦。
提示:
使用CAsyncSocket类和CSocket类编程,需要加载头文件afxsock.h。
以下为CAsyncSocket类的编程模式。
1)创建一个Socket
创建一个Socket分为两步,首先调用CAsyncSocket类的构造函数创建一个CAsyncSocket类的
对象;然后调用成员函数Create创建底层套接字。构造套接字时,对于服务器端的程序,需要用一
个众所周知的端口提供服务;而对于客户端程序,使用缺省的参数调用Create函数创建Socket即可。
以下是创建Socket的程序代码举例。
(1)服务器端程序:
CAsyncSocketServerSocket;
int ? nPort=27;
ServerSocket.Create(nPort,SOCK_DGRAM);
以上程序在栈中创建了一个CAsyncSocket对象,并用调用该对象的Create函数创建了一个数据
报式套接字。
CAsyncSocket* pServer=newCAsyncSocket;
intnPort=27;
pServer- Create(nPort);
以上程序在堆中创建了一个CAsyncSocket对象,并用调用该对象的Create函数创建了一个字节
流式套接字,创建字节流式套接字的Create函数的第二个参数可省略。
(2)客户端程序;
CAsyncSocketClientSocket;
ClientSocket.Create();
以上程序在栈中创建了一
您可能关注的文档
- EPON+VLAN+QinQ培训.ppt
- GRE协议简述.doc
- MA5200F配置及其维护宝典V1.0.doc
- MA5200G配置及其维护宝典V1.0.doc
- MA5200配置及其维护宝典V1.0.doc
- sip服务器概要设计.doc
- 大对数语音电缆线序.doc
- 交换专业题库.doc
- 全国各地电信-网通-铁通+VPI、VCI、DNS值列表.doc
- 通信系统原理.ppt
- 思科模拟器全面介绍(2004版).doc
- 思科IOS新命名规范详细图解(IOS+12.3).doc
- 网虎建站-网站后台使用说明.doc
- 高级人力薪酬管理.ppt
- 【优化方案】2012高三数学一轮复习 第10章10.3模拟方法(几何概型)、概率的应用课件 文 北师大版.ppt
- 【优化方案】2012高三数学一轮复习 第1章1.1集合的概念与运算课件 文 北师大版.ppt
- 【优化方案】2012高三数学一轮复习 第2章2.1函数及其表示课件 文 北师大版.ppt
- 【优化方案】2012高三数学一轮复习 第2章2.6对数与对数函数课件 文 北师大版.ppt
- 【优化方案】2012高三数学一轮复习 第3章3.1任意角与弧度制、任意角的三角函数课件 文 北师大版.ppt
- 【优化方案】2012高三数学一轮复习 第3章3.2同角三角函数的基本关系及诱导公式课件 文 北师大版.ppt
文档评论(0)