PeerConnectionClient(二)之Win32Socket
来源:互联网 发布:centos 编辑文件 编辑:程序博客网 时间:2024/06/06 05:49
Win32Socket类主要成员为:
EventSink是用来干嘛的呢,其实他主要是为了接收socket事件用的,从图中可看出,EventSink继承自Win32Window类,Win32Window类对应着一个MFC窗口,通过Windwos API:
WSAAPIWSAAsyncSelect( _In_ SOCKET s, _In_ HWND hWnd, _In_ u_int wMsg, _In_ long lEvent );
将Win32Socket的socket事件注册,当消息到来时,hWnd句柄对应的窗口便能接收到该消息。
注册的代码在:
bool Win32Socket::SetAsync(int events) { if (NULL == sink_) { CreateSink(); ASSERT(NULL != sink_); } // start the async select if (WSAAsyncSelect(socket_, sink_->handle(), WM_SOCKETNOTIFY, events) == SOCKET_ERROR) { //将socket_注册到sink_对应的窗口 UpdateLastError(); Close(); return false; } return true;}
消息处理函数在:
LRESULT Win32Window::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { Win32Window* that = reinterpret_cast<Win32Window*>( ::GetWindowLongPtr(hwnd, GWLP_USERDATA)); if (!that && (WM_CREATE == uMsg)) { that->wnd_ = hwnd; } if (that) { LRESULT result; bool handled = that->OnMessage(uMsg, wParam, lParam, result); //调用自己或派生类的OnMessage() } return ::DefWindowProc(hwnd, uMsg, wParam, lParam);}
阅读全文
0 0
- PeerConnectionClient(二)之Win32Socket
- PeerConnectionClient分析(一)
- 之二
- 赠别 二首之二
- 框架之 hibernate之二
- DoxyGen文档之二
- 感受Longhorn之二
- 揭短之二
- 近日二三事之二
- 成功誓言之二
- delphi2005探讨之二
- [随时感动]之二
- 童年趣事之二
- C#速成(之二)
- Linux常用命令之二
- 皮皮之二
- 关于XFS之二
- STL学习之(二)
- LintCode线段树/扫描线/查询题总结
- Science:机器人可以通过示教相互学会新技能
- Android系统如何修改默认打开程序
- tinyxml2的简单运用
- PeerConnectionClient分析(一)
- PeerConnectionClient(二)之Win32Socket
- 选择结构
- 496. Next Greater Element I
- peerconnection_client demo总流程(一)
- peerconnection_client demo总流程(二)
- peerconnection_client demo总流程(三)
- NAT的4种类型
- p2p建立连接过程
- ffmpeg之rtmp分析(一)