Client.h
资源名称:视频会议系统.rar [点击查看]
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:8k
源码类别:
IP电话/视频会议
开发平台:
Visual C++
- // Client.h: interface for the CClient class.
- //
- //////////////////////////////////////////////////////////////////////
- #ifndef __CLIENT_H__
- #define __CLIENT_H__
- #if _MSC_VER > 1000
- #pragma once
- #endif
- //标准C++类
- #include "....公共类STL.h"
- //网络管理类
- #include "....公共类TCP.h"
- //日志文件类
- #include "....公共类LogFile.h"
- //通道类型
- #include "....公共类PackagePChannelType.h"
- //用户注册
- #include "....公共类PackagePRegisterREQ.h"
- #include "....公共类PackagePRegisterRES.h"
- //获得在线用户信息
- #include "....公共类PackagePOnlineUserREQ.h"
- #include "....公共类PackagePOnlineUserRES.h"
- //创建一个数据节点
- #include "....公共类PackagePCreateDataNodeREQ.h"
- #include "....公共类PackagePCreateDataNodeRES.h"
- //加入会议
- #include "....公共类PackagePJoinDataNodeREQ.h"
- #include "....公共类PackagePJoinDataNodeRES.h"
- #include "....公共类PackagePJoinDataNode.h"
- //邀请用户
- #include "....公共类PackagePInviteUserREQ.h"
- #include "....公共类PackagePInviteUserRES.h"
- //视频数据头信息
- #include "....公共类PackagePVideoData.h"
- //接收视频数据
- #include "....公共类PackagePRecvVideoREQ.h"
- #include "....公共类PackagePSendVideoREQ.h"
- //停止发送视频数据
- #include "....公共类PackagePStopVideoREQ.h"
- //声音数据包
- #include "....公共类PackagePAudioData.h"
- //申请发言
- #include "....公共类PackagePSendAudioREQ.h"
- #include "....公共类PackagePSendAudioRES.h"
- #include "....公共类PackagePSendAudio.h"
- //点名发言
- #include "....公共类PackagePRecvAudioREQ.h"
- #include "....公共类PackagePRecvAudioRES.h"
- //停止发言
- #include "....公共类PackagePStopAudioREQ.h"
- #include "....公共类PackagePSendAudioRES.h"
- //其他模块的数据包
- #include "....公共类PackagePModulePackage.h"
- //退出会议
- #include "....公共类PackagePExitDataNodeREQ.h"
- //网络连接测试
- #include "....公共类PackagePConnectTest.h"
- //云台镜头的控制
- #include "....公共类PackagePPanelCommand.h"
- //广播
- #include "....公共类PackagePBroadcastREQ.h"
- #include "....公共类PackagePBroadcastRES.h"
- #include "....公共类PackagePStopBroadcast.h"
- //视频类
- #include "VideoVideoUSB.h"
- //声音类
- #include "SoundSoundIn.h"
- #include "SoundDirectSound.h"
- //云台镜头控制类
- #include "ComPelcod.h"
- //同步工作
- #include "....公共类PackagePSynCommand.h"
- //广播类
- #include "Multicast.h"
- //组播地址 224.0.0.99
- #define MULTICAST_IP "224.0.0.99"
- //组播视频端口 5000
- #define MULTICAST_VIDEO_PORT 5000
- //组播音频端口 6000
- #define MULTICAST_AUDIO_PORT 6000
- class CClient
- {
- public:
- enum { MSG = WM_USER + 100 };
- CClient( );
- virtual ~CClient( );
- //运行客户端
- bool Run( const char * IP , const int Port );
- //断开与服务器的连接
- void Stop( void );
- //初始化视频
- void InitVideo( HWND hWnd );
- //获得视频
- CVideoUSB & GetVideo( ){ return video; };
- //获得声音控制
- CSoundIn & GetSoundIn( void ){ return sound_in; }
- //获得网络连接
- CTCP & GetTCP( bool command = true ){ return command ? cmdTCP : videoTCP; }
- //是否广播
- bool IsBroadcast( void ){ return this->broadcast_video.IsConnected( ) || this->broadcast_audio.IsConnected( ); }
- //获得服务器的IP
- const char * GetServerIP( void ){ return this->serverIP.c_str( );}
- //获得服务器的端口
- const int GetServerPort( void ){ return this->serverPort; }
- //获得当前的用户名
- const char * GetUserName( void ){ return this->userName.empty( ) ? NULL : this->userName.c_str( ); }
- //获得当前用户密码
- const char * GetUserPassword( void ){ return this->password.empty( ) ? NULL : this->password.c_str( ); }
- //获得当前的用户名
- const int GetUserID( void ) { return this->user_id; }
- //获得用户所在的会议名
- string & GetConferenceName( void ){ return this->conference_name; }
- //是否主持人
- bool IsCharement( void ){ return this->m_bCharement; }
- //赋予消息处理函数
- void AttachMsgHandler( void * handle );
- //用户注册
- int Register( const char * username , const char * password );
- //发送视频头信息
- void SendVideoHeader( void );
- //获得在线用户信息
- void SendOnlineUserREQ( void );
- //创建会议
- void SendCreateDataNode( const char * name );
- //加入会议请求
- bool SendJoinDataNodeREQ( const char * c_name );
- //邀请用户加入我的会议
- void SendInviteUserREQ( int user_id , bool prompt );
- //发送接收对方视频数据
- void SendRecvVideoREQ( int user_id );
- //发送请求发言
- void SendSendAudioREQ( void );
- //发送点名发言
- void SendRecvAudioREQ( int user_id );
- //发送停止发言(如果是自己请求停止发言,那么user_id == -1 、否则为请求停止的用户id)
- void SendStopAudioREQ( int user_id = -1 );
- //发送模块的信息
- void SendModulePackage( int module , char * buffer , int size );
- //发送退出会议
- void SendExitDataNode( void );
- //发送网络连接测试
- void SendTestConnect( void );
- //发送同步信息包
- void SendSynCommand( int command , bool fullScreen );
- //发送广播请求
- void SendBroadCastREQ( int user_id );
- //停止广播
- void StopBroadCast( void );
- protected:
- //停止广播
- void OnStopBroadcast( CBuffer & buffer );
- //广播回复
- void OnBroadCastRES( CBuffer & buffer );
- //广播请求
- void OnBroadCastREQ( CBuffer & buffer );
- //会议同步命令包
- void OnSynCommand( CBuffer & buffer );
- //云台镜头控制信息
- void OnPanelCommand( CBuffer & buffer );
- //模块信息
- void OnModulePackage( CBuffer & buffer );
- //请求发言回复
- void OnSendAudioRES( CBuffer & buffer );
- //请求发言
- void OnSendAudioREQ( CBuffer & buffer );
- //主持人点名发言
- void OnRecvAudioREQ( CBuffer & buffer );
- //点名发言回复
- void OnRecvAudioRES( CBuffer & buffer );
- //处理停止接收视频数据请求
- void OnStopVideoREQ( CBuffer & buffer );
- //处理发送视频请求
- void OnSendVideoREQ( CBuffer & buffer );
- //邀请用户加入会议请求
- void OnInviteUserREQ( CBuffer & buffer );
- //邀请用户加入会议回复
- void OnInviteUserRES( CBuffer & buffer );
- //处理加入会议请求
- void OnJoinDataNodeREQ( CBuffer & buffer );
- //处理加入会议回复
- void OnJoinDataNodeRES( CBuffer & buffer );
- //创建会议回复
- void OnCreateDataNodeRES( CBuffer & buffer );
- //在线用户状态
- void OnlineUserRES( CBuffer & buffer );
- //发送消息
- int SendMsg( CDataPackage * package );
- //处理命包线程
- static void OnCommand( void * pContext );
- //处理视频线程
- static void OnVideo( void * pContext );
- //处理声音线程
- static void OnAudio( void * pContext );
- //视频数据捕捉
- static void OnCapture( void * pContext , char * buffer , int size , bool m_bHeader );
- //声音捕捉
- static void OnSound( void * pContext , char * buffer , int size );
- //接收视频广播
- static void OnBroadCastVideo( void * pContext );
- //接收声音广播
- static void OnBroadCastAudio( void * pContext );
- private:
- //服务器的IP
- string serverIP;
- //服务器端口
- int serverPort;
- //命令通道
- CTCP cmdTCP;
- //视频数据通道
- CTCP videoTCP;
- //声音数据通道
- CTCP audioTCP;
- //消息处理句柄
- void * msg_handle;
- //用户名
- string userName;
- //密码
- string password;
- //用户id
- int user_id;
- //用户所在的会议名称
- string conference_name;
- //主持人标志
- bool m_bCharement;
- //视频采集
- CVideoUSB video;
- //声音采集
- CSoundIn sound_in;
- //显示视频数据列表
- INT_PTR_MAP recv_video_map;
- //声音播放数据列表
- INT_PTR_MAP recv_audio_map;
- //云台镜头控制
- CPelcod Pelcod;
- //广播视频
- CMulticast broadcast_video;
- //广播音频
- CMulticast broadcast_audio;
- //接收广播着id
- int broadcast_id;
- //是否需要发送视频数据
- bool m_bSendVideo;
- };
- #endif // !defined(AFX_CLIENT_H__F98C0EA3_59C3_404F_B706_EE5BBFE3F2E9__INCLUDED_)