📄 cmediasocketclient.cpp
字号:
//
// CMediaSocketClient.cpp
//
#include "stdafx.h"
#include "CMediaSocketClient.h"
#include "CDataAdmin.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////////////////////////////////////////////////////////////////////////
CMediaSocketClient::CMediaSocketClient()
{
m_dwRecvCount = 0;
m_bGraphStarted = false;
m_pDataList = NULL;
m_hCountWnd = NULL;
m_LocalFile = NULL;
m_LocalFile = new CFile("receive.mpg", CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
}
CMediaSocketClient::~CMediaSocketClient()
{
if (m_LocalFile)
{
m_LocalFile->Close();
delete m_LocalFile;
m_LocalFile = NULL;
}
m_pDataList = NULL;
}
void CMediaSocketClient::ReceivingLoop(void)
{
int nret = 0;
char buff[ MPEG1_PACK_SIZE];
CSocket Creceive;
Creceive.Create(8005,SOCK_DGRAM);
unsigned int port=8007;
CString ip="127.0.0.1";
while (m_bReceiving)
{
/***删了***//////
while ((nret = Creceive.ReceiveFrom(buff, MPEG1_PACK_SIZE,ip,port)) == E_SOCKET_NOT_READY)
{
Sleep(50);
}
if (m_LocalFile)
{
m_LocalFile->Write(buff, MPEG1_PACK_SIZE);
}
// Add to buffer list for filter graph using
if (m_pDataList)
{
PMPEG1_PACK pData = m_pDataList->GetWriteBuffer();
if (pData == NULL && m_pDataList->GetListSize() < PACK_MAX_COUNT)
{
// Allocate more buffer
pData = new MPEG1_PACK;
}
if (pData != NULL)
{
memcpy(pData, buff, MPEG1_PACK_SIZE);
m_pDataList->ReleaseWriteBuffer(pData);
}
// Receive data pack counting...
m_dwRecvCount++;
if ((m_dwRecvCount >= PACK_INIT_COUNT) &&
!m_bGraphStarted)
{
::SetEvent(m_pDataList->m_hBufEnough); //大于100开始运行
m_bGraphStarted = true;
}
//#ifdef _DEBUG
if (m_hCountWnd != NULL)
{
char buff[15];
itoa(m_dwRecvCount, buff,10);
::SendMessage(m_hCountWnd, WM_SETTEXT, 0, (LPARAM)buff);
}
//#endif
}
}
// If no more data receiving, flush data
if (m_pDataList)
{
m_pDataList->SetFlushing();
}
}
void CMediaSocketClient::SetRecvBuffer(CDataAdmin * inBuf)
{
if (m_pDataList == NULL)
{
m_pDataList = inBuf;
}
}
void CMediaSocketClient::SetCountWnd(HWND inWnd)
{
m_hCountWnd = inWnd;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -