15.3.7 远程摄像头--创建监控方工程(1)
本节开始创建监控方工程,详细步骤如下所示。
(1)创建MFC对话框应用程序,监控方对话框模板布局如图15.17所示。其中IP编辑框控件ID设为IDC_EDIT_IP;Port编辑框控件ID设为IDC_EDIT_PORT;启动服务方按钮ID设为IDC_BTN_START。
|
| 图15.17 对话框模板布局 |
(2)为参考客户方工程添加网络传输单元,并为监控方工程添加已定义好的公用消息定义文件Msg_Public.h,还要在VideoSvrDlg.h中添加如下代码:
- #include "PictureConvert.h"
- #include "TcpServe.h"
- #include "Msg_Public.h"
为CVideoSvrDlg类添加公有成员变量,代码如下:- CTcpServer *m_pTcpSvr; //服务方连接指针
- CPictureConvert m_PictureConvert; //BMP与JPG互转类对象
在CVideoSvrDlg类构造函数中添加如下代码:- m_pTcpSvr = new CTcpServer(16); //最多支持16个客户方连接
为CVideoSvrDlg类添加析构函数,并在该函数中添加如下代码:- delete m_pTcpSvr;
在CVideoSvrDlg类中添加静态成员函数,用于处理MSG_VIDEO_DATA_C2S网络消息,代码如下:- static void msg_MSG_VIDEO_DATA_C2S(CNetPackage *pNetPack);
(3)为启动服务方按钮添加单击消息处理函数,并在该函数中添加如下代码,其作用是注册服务方处理的消息及消息处理函数,创建并启动服务端,代码如下:- 01 void CVideoSvrDlg::OnBtnStart()
- 02 {
- 03 //注册MSG_VIDEO_DATA_C2S消息处理函数
- 04 m_pTcpSvr->RegsiterMsgToServer(MSG_VIDEO_DATA_C2S,
- 05 CVideoSvrDlg::msg_MSG_VIDEO_DATA_C2S);
- 06 char ip[16]={0}, port[16]={0};
- 07 GetDlgItem(IDC_EDIT_IP)->GetWindowText(ip, 16);
- 08 GetDlgItem(IDC_EDIT_PORT)->GetWindowText(port, 16);
- 09 __int16 nPort=0
- 10 nPort = atoi(port);
- 11 if(m_pTcpSvr->CreateServer(ip, nPort)) //创建服务方
- 12 {
- 13 m_pTcpSvr->RunServer(); //运行服务方
- 14 GetDlgItem(IDC_BTN_START)->EnableWindow(FALSE);
- 15 }
- 16 }