eMule中的 CAsyncSocketEx 类
2007-12-05 17:17
453 查看
说说eMule中的大多数通信类的基类CAsyncSocketEx
1、先看看静态链表m_spAsyncSocketExThreadDataList
其数据成员定义如下:
struct t_AsyncSocketExThreadData
{
CAsyncSocketExHelperWindow *m_pHelperWindow; //线程中的socket事件接收窗口
int nInstanceCount; //线程中CAsyncSocketEx 实例的个数
DWORD nThreadId; //线程id
}
在每个线程中,只有一个m_pHelperWindow,所有的CAsyncSocketEx 实例的socket事件都会发送到这个窗口。
m_pHelperWindow可以依据收到的通知消息message,获取相应的CAsyncSocketEx 实例 指针。
1、CAsyncSocketEx 在socket 事件通知消息派发上,速度要快于CAsyncSocket。
m_pHelperWindow里面有一个数组指针m_pAsyncSocketExWindowData,其成员对应线程中的每一个socket信息。
CAsyncSocketEx 的实例调用WSAAsyncSelect(SOCKET hSocket, HWND hWnd, int wMsg, long lEvent) 函数将hSocket上发生的事件通知发送消息wMsg给hWnd,其中wMsg-WM_SOCKETEX_NOTIFY 即为m_pAsyncSocketExWindowData中的数组下标,因此,在m_pHelperWindow接收到消息通知时,可以直接通过
m_pAsyncSocketExWindowData[wMsg-WM_SOCKETEX_NOTIFY]得到对应CAsyncSocketEx 指针,而在CAsyncSocket中,是通过socket线程状态中的m_plistSocketNotifications遍历获取socket指针的,因此,在线程的socket数量很多的情况下,CAsyncSocketEx 在事件通知消息派发上,速度要明显快于CAsyncSocket。
2、CAsyncSocketEx 提供一个灵活的分层系统,可以方便地在它的实例中添加代理支持,支持socks 4、socks 4a、socks 5 和http 1.0 、http1.1代理,以后还会增加SSL 安全连接支持。
1、先看看静态链表m_spAsyncSocketExThreadDataList
其数据成员定义如下:
struct t_AsyncSocketExThreadData
{
CAsyncSocketExHelperWindow *m_pHelperWindow; //线程中的socket事件接收窗口
int nInstanceCount; //线程中CAsyncSocketEx 实例的个数
DWORD nThreadId; //线程id
}
在每个线程中,只有一个m_pHelperWindow,所有的CAsyncSocketEx 实例的socket事件都会发送到这个窗口。
m_pHelperWindow可以依据收到的通知消息message,获取相应的CAsyncSocketEx 实例 指针。
1、CAsyncSocketEx 在socket 事件通知消息派发上,速度要快于CAsyncSocket。
m_pHelperWindow里面有一个数组指针m_pAsyncSocketExWindowData,其成员对应线程中的每一个socket信息。
CAsyncSocketEx 的实例调用WSAAsyncSelect(SOCKET hSocket, HWND hWnd, int wMsg, long lEvent) 函数将hSocket上发生的事件通知发送消息wMsg给hWnd,其中wMsg-WM_SOCKETEX_NOTIFY 即为m_pAsyncSocketExWindowData中的数组下标,因此,在m_pHelperWindow接收到消息通知时,可以直接通过
m_pAsyncSocketExWindowData[wMsg-WM_SOCKETEX_NOTIFY]得到对应CAsyncSocketEx 指针,而在CAsyncSocket中,是通过socket线程状态中的m_plistSocketNotifications遍历获取socket指针的,因此,在线程的socket数量很多的情况下,CAsyncSocketEx 在事件通知消息派发上,速度要明显快于CAsyncSocket。
2、CAsyncSocketEx 提供一个灵活的分层系统,可以方便地在它的实例中添加代理支持,支持socks 4、socks 4a、socks 5 和http 1.0 、http1.1代理,以后还会增加SSL 安全连接支持。
相关文章推荐
- 090828项目进展:学习emule源码4,CAsyncSocketEx
- 支持SSL的封装类--CAsyncSocketEx
- CAsyncSocket
- CAsyncSocket
- CAsyncSocket UDP
- CAsyncSocket
- CAsyncSocket
- CAsyncSocket
- CAsyncSocket close Onclose
- CSocket 和CAsyncSocket类介绍
- Mobile CAsyncSocket.create 失败
- python的socket里 gethostbyname 与 gethostbyname_ex 的区别
- CAsyncSocket多线程环境
- CAsyncSocket
- python的socket里 gethostbyname 与 gethostbyname_ex 的区别
- 不明错误'CAsyncSocket' : base class undefined
- 不明错误'CAsyncSocket' : base class undefined
- CAsyncSocket血的教训-静态库惹的祸!
- CAsyncSocket
- Windows Sockets: Using Class CAsyncSocket