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

📄 basestream.cpp

📁 组播发送测试网络程序,客户端
💻 CPP
字号:
// BaseStream.cpp: implementation of the CBaseStream class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "BaseStream.h"
#include "MultiSock_s.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBaseStream::CBaseStream()
{m_zStreamStatus=S_S_Idle;
 m_hBeginPlay=m_hPausePlay=m_hStopPlay=m_hTerminateThread=m_hThread=NULL;
 m_fStreamBitrate=0;
// TRACE("Create Base Stream\n");
}

CBaseStream::~CBaseStream()
{
 Close();
}

DWORD CBaseStream::StreamThread()
{  return BS_OK;
}

int CBaseStream::Create(SOCKADDR_IN myAddr, SOCKADDR_IN multiAddr)
{ //TRACE("Create base Thread\n");
  int nRet=m_MultiSock.Startup(myAddr,multiAddr);
  if(nRet==INVALID_SOCKET)
  { 
    return BS_FAIL;

  }
    m_hTerminateThread = CreateEvent(NULL,TRUE,FALSE,NULL);
	m_hBeginPlay = CreateEvent(NULL,TRUE,FALSE,NULL);
	m_hPausePlay = CreateEvent(NULL,TRUE,FALSE,NULL);
    m_hStopPlay = CreateEvent(NULL,TRUE,FALSE,NULL);

	m_hThread = CreateThread(NULL,0,InitialThread,this,0,&m_dwThreadId);
	m_zStreamStatus=S_S_Inited;
 
    return BS_OK;
}

void CBaseStream::Start()
{
 if(m_zStreamStatus==S_S_Running) return ;		
 SetEvent(m_hBeginPlay);
}

void CBaseStream::Pause()
{
 if(m_zStreamStatus!=S_S_Running) return ;		
  SetEvent(m_hPausePlay);
}

void CBaseStream::Stop()
{
 if(m_zStreamStatus!=S_S_Running) return ;
  SetEvent(m_hStopPlay);
}

void CBaseStream::Close()
{
 if(m_zStreamStatus==S_S_Idle||m_zStreamStatus==S_S_Closed) 
		return;
	SetEvent(m_hTerminateThread);
if (WaitForSingleObject(m_hThread,100)!=WAIT_OBJECT_0){
	TerminateThread(m_hThread,CLOSETHREADCODE);
	}
   
  CloseHandle_(m_hTerminateThread);
  CloseHandle_(m_hBeginPlay);
  CloseHandle_(m_hPausePlay);
  CloseHandle_(m_hStopPlay);
  
   m_MultiSock.Close();
   m_zStreamStatus=S_S_Closed;
}

Stream_Status CBaseStream::GetStreamStatus()
{
 return m_zStreamStatus;
}

float CBaseStream::GetStreamBitrate()
{
 return m_fStreamBitrate;
}

int CBaseStream::SendData(LPVOID lpBuf, int iSize)
{
 return m_MultiSock.SendData(lpBuf,iSize);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -