码迷,mamicode.com
首页 > 其他好文 > 详细

对CSocket类使用的理解

时间:2014-11-21 12:49:28      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:vc++   csocket   局域网聊天   

今天看了本书上的例程,做的是局域网聊天工具,用的Socket知识。前面介绍了Socket相关的函数,这些之前都了解。不过真正实现的时候却是用了封装的CSocket类,然后绕来绕去感觉一头雾水,花了好长时间研究了它的代码。

首先它的主类继承自CSocket类,然后注意到重载了三个函数:

virtual void OnReceive(); //接收到数据

virtual void OnClose(); //关闭

virtual void OnAccept(); //接收新用户

然后在这三个重载的函数的实现是分别发送SOCKET_EVENT消息给窗口:

pWnd -> SendMessage(SOCKET_EVENT,(long)this,RETR/CLOSE/ACCEPT);

接着,程序定义了消息SOCKET_EVENT,并定义了消息映射:

ON_MESSAGE(SOCKET_EVENT,OnSocket)

最后添加OnSocket函数进行消息处理。处理中对消息的lParam进行switch-case判断处理。

那么现在,我的理解是:那三个重载的函数,应该是CSocket类中封装好的,自己创建了线程在里面,例如一旦缓冲区接收到消息,它就会自动调用OnReceive函数,启动接收的线程,原理应该和串口控件MSComm一样的。重载之后,一旦自动调用,会发不同参数的消息给窗口,最后窗口对消息进行判断处理。而对于Send功能怎没有对应的线程,而是定义个按钮作为启动事件。一般都是把Send作为主动功能,而Receive作为线程。

另外,程序使用了CS架构编写,和我之前看的P2P不一样,主要是服务器端是负责转发的功能,因此会先Receive读取数据,再Send转发数据。转发还分群发和私聊。而客户端这边Receive和Send是分开的,都是和服务器发生关系。

对CSocket类使用的理解

标签:vc++   csocket   局域网聊天   

原文地址:http://blog.csdn.net/hunterlew/article/details/41344809

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!