📄 clientsocket.h
字号:
#if !defined(AFX_ClientSocket_H__E8C1E518_A4A2_4F3C_B420_BFA361991E61__INCLUDED_)
#define AFX_ClientSocket_H__E8C1E518_A4A2_4F3C_B420_BFA361991E61__INCLUDED_
#include "DataAdmin.h"
#include "264Packet.h"
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ClientSocket.h : header file
//
#define WM_CLIENTSOCKET WM_USER+26 //给主窗口发送的消息
//发送的消息类型
#define RECVDATA 0x00000001
#define RECVERR (RECVDATA<<1)
#define SENDREQUEST (RECVDATA<<2)
#define BEPLAYING (RECVDATA<<3)
//#define CONNECTED (RECVDATA<<4)
#define NALU_MSG (RECVDATA<<5)
#define SEQ_PARAMS_MSG (RECVDATA<<6)
#define PIC_PARAMS_MSG (RECVDATA<<7)
#define SEQ_PIC_PAR_MSG (RECVDATA<<8)
#define SOCKCLOSED (RECVDATA<<9)
#define UNKNOWN_DATA_MSG (RECVDATA<<10)
#define SOCKET_CLOSED (RECVDATA<<11)
#define CONNECTED_SOCK_CLOSED (RECVDATA<<12)
/*
//数据包头
typedef struct
{
unsigned int nPackType : 32; //数据包的负载类型
unsigned int nDataSize : 32; //数据包的负载长度
}PACK_HEAD, *PPACK_HEAD;
//数据包负载类型
#define SEQUENCE_PARAMS 0x01 //视频序列头参数集
#define PICTURE_PARAMS 0x02 //视频图像参数集
#define SEQ_PIC_PARAMS 0x03 //序列和图像参数集放在一起发送
#define NALU_DATA 0x04 //编码的NAL单元的数据(视频数据)
*/
//保存视频序列头的结构体
typedef struct
{
byte lenOfParams;
byte params[255];
} VIDEO_PARAMS;
/////////////////////////////////////////////////////////////////////////////
// CWorkSocket command target
class CClientSocket : public CSocket
{
// Operations
public:
CClientSocket();
virtual ~CClientSocket();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CWorkSocket)
//}}AFX_VIRTUAL
virtual void OnReceive(int nErrorCode);
virtual void OnClose(int nErrorCode);
// Generated message map functions
//{{AFX_MSG(CWorkSocket)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
void initial(UINT MaxPag, HWND hWndP);
int SendRequest(); //发送数据请求
CDataAdmin* getDataPool();
// void ResetSockState();
BOOL getSequenceHead(VIDEO_PARAMS* pVideoParams);
void Close();
// Attribute
protected:
LPBYTE pBufferRecv; //接收数据内存
UINT c_MaxPag; //接收数据内存的最大长度,对UDP方式,需要确保接收内存足够大
// FILE* fileHandle; //保存文件的指针,保留
CDataAdmin* m_pDataPool; //数据池
UINT m_nBitsRecv;
DWORD dwOrgTime;
HWND hWnd;
VIDEO_PARAMS m_seqParams; //序列参数集
VIDEO_PARAMS m_picParams; //图像参数集
VIDEO_PARAMS m_seqPicParams; //合并的序列参数集和图像参数集,图像参数在后
enum {PACK_HEAD_SIZE = sizeof(PACK_HEAD)};
public:
SOCKSTATE m_state; //记录本类状态信息的结构体
float m_fBitsPerSecond; //接收码流的码率
static UINT m_nConnections; //连接数,与多少个服务器相连
DWORD dwTime;
DWORD dwTimeTmp;
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_WORKSOCKET_H__E8C1E518_A4A2_4F3C_B420_BFA361991E61__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -