CAsyncSocket类中的Accept()和OnAccept()及MySocketOnAccept()重载的OnAccept()是什么关系?

来源:百度知道 编辑:UC知道 时间:2024/07/04 12:12:28
他们如何工作的?哪位兄弟能介绍一下。

Accept 是方法.

OnAccept 是事件

比如你监听了一个端口(TCP方式),然后对方有一个连接连入你,这个时候一般的处理方法是

CAsyncSocket Socket;
this->Accept(Socket);
Socket.Send("....",strlen("...."));

这里需要使用 Accept 分配一个 Socket 和当前连入的 Socket 进行通讯.

而你题目说的如果我从 CAsyncSocket 继承一个 MySocket 类,那么子类如果重载 OnAccept 函数,那么就要看你怎么写的了

CAsyncSocket *pSocket = new CAsyncSocket();
//这样如果触发事件则是 CAsyncSocket 的,但是这个是MFC的类,所以我们无法修改他的代码,所以一般这样写都是用的阻塞模式

CMySocket *pSocket = new CMySocket();
//这样是一般TCP通讯时代码的编写方法,这样当对方连接时触发的是 CMySocket 的 OnAccept 事件,如果我没记错的话MFC里CAsyncSocket的 OnAccept 用的是虚函数.
这样就是一般非阻塞模式的一般写法

当然上面说的都是TCP方式才有,UDP方式没有这个事件消息.

至于什么是阻塞什么是非阻塞....太长了懒得写,要是不懂发消息给我.记得写明问题地址.