MFC的Socket套接字

要使用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类,就一定需要从这两个类中继承出自己的类来使用,因为需要修改虚函数才能实现某些基本功能。

2. 可以方便的处理同步与异步问题。


// 下面三个链接很好的说明和总结了 CAsyncSocket 和 CSocket 的区别

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的种种.. 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值