要使用MFC的socket类,准备工作和使用API的socket类不同,在加载套接字库时,必须在app类的InitInstance()函数里调用AfxSocketInit函数,AfxSocketInit函数内部将调用WSAStartup函数加载套接字库,并且加载的是1.1版本的套接字库,使用AfxSocketInit函数不需要为工程链接ws2_32.lib库文件。如果AfxSocketInit函数调用成功,函数返回非0值,失败则返回0值。使用AfxSocketInit函数加载套接字库的另一个好处是在程序终止前会自动调用WSACleanup函数终止套接字库使用。因为程序调用了AfxSocketInit函数,所以还必须包含相应的头文件,在stdafx.h中添加#include "afxsock.h"。
问题: CAsyncSocket 和 CSocket 的区别
MFC提供了两个封装socket的类,分别是CAsyncSocket 和 CSocket ,当中CSocket 是由CAsyncSocket 继承的子类,这两个socket类有一个很大的区别,就是CAsyncSocket 是异步套接字而 CSocket是同步套接字,使用MFC的socket类有两个很明显的好处是:
1. 可以从这两个socket类中继承出自己的socket类,从而根据需要增加自己socket类的功能,而且要使用这两个socket类,就一定需要从这两个类中继承出自己的类来使用,因为需要修改虚函数才能实现某些基本功能。
CAsyncSocket与CSocket的区别:
前者是异步通信,后者是同步通信;前者是非阻塞模式,后者是阻塞模式。另外,异步非阻塞模式有时也被称为长连接,同步阻塞模式则被称为短连接。
使用同步模式的时候,调用发送/接收函数,函数调用结束时,相应的发送/接收处理已经完成,数据已经被发送/接收到了。
问题: CAsyncSocket 和 CSocket 的区别
MFC提供了两个封装socket的类,分别是CAsyncSocket 和 CSocket ,当中CSocket 是由CAsyncSocket 继承的子类,这两个socket类有一个很大的区别,就是CAsyncSocket 是异步套接字而 CSocket是同步套接字,使用MFC的socket类有两个很明显的好处是:
1. 可以从这两个socket类中继承出自己的socket类,从而根据需要增加自己socket类的功能,而且要使用这两个socket类,就一定需要从这两个类中继承出自己的类来使用,因为需要修改虚函数才能实现某些基本功能。
2. 可以方便的处理同步与异步问题。
http://blog.csdn.net/fangle6688/article/details/986808
http://light6891.blog.163.com/blog/static/969629092009712114239605/
http://blog.csdn.net/jmcooler/article/details/17258
CAsyncSocket与CSocket的区别:
前者是异步通信,后者是同步通信;前者是非阻塞模式,后者是阻塞模式。另外,异步非阻塞模式有时也被称为长连接,同步阻塞模式则被称为短连接。
使用同步模式的时候,调用发送/接收函数,函数调用结束时,相应的发送/接收处理已经完成,数据已经被发送/接收到了。
使用异步模式的时候,调用发送/接收函数,函数调用结束时,表示数据已经送达底层去处理了,但是是否处理结束并不知道。你的代码可以继续做其他操作,稍候相应的操作结束时,处理结果会通过事件(或者回调)来告诉调用者。
等稍后有时间 上传下TCP IP UDP的种种..