⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientsocket.h

📁 实现在PC机与TMSC6000系列dsp板间的通信
💻 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 + -