为什么使用CSocket类或CAsyncSocket类之前必须先创建他们的子类?

wuxia2118 2018-05-06 11:03:08
为什么使用CSocket类或CAsyncSocket类之前必须先创建他们的子类,然后再用子类去创建套接字变量,例如:
#include "Server.h"		//创建的子类CServer,基于CSocket

class CCSocketSerDlg : public CDialog
{
// Construction
private:
CServer m_Server; //用于创建端口
CServer m_Recv; //用于绑定对方IP地址和端口号


我如果不创建CServer子类,而是直接用CSocket去创建套接字对象变量,代码如下:

class CCSocketSerDlg : public CDialog
{
// Construction
private:
private:
CSocket m_Server; //用于创建端口
CSocket m_Recv; //用于绑定对方IP地址和端口号

则编译也不会出错,但是不能通信,发送和接收消息都会失败,这是为什么呢?
【声明】:请就事论事,不要告诉我MFC的Socket没必要学了】
...全文
624 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2018-05-07
  • 打赏
  • 举报
回复
引用 4 楼 zhoujielunzhimi 的回复:
使用CSocket可以不用子类,但是,因为是阻塞的,所以需要一个线程来接收数据。 而CAsyncSocket是非阻塞的,它的接收数据处理是在OnReceive中,这是一个虚函数,所以需要子类来重写,在重写中接收数据。
+++
sumos 2018-05-07
  • 打赏
  • 举报
回复
使用CSocket可以不用子类,但是,因为是阻塞的,所以需要一个线程来接收数据。 而CAsyncSocket是非阻塞的,它的接收数据处理是在OnReceive中,这是一个虚函数,所以需要子类来重写,在重写中接收数据。
wuxia2118 2018-05-07
  • 打赏
  • 举报
回复
你自己搜过吗,我是搜不到
赵4老师 2018-05-07
  • 打赏
  • 举报
回复
百度搜相关关键字。
wuxia2118 2018-05-06
  • 打赏
  • 举报
回复
还有为什么Socket对象要声明为private呢

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧