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

📄 rbasestream.cpp

📁 组播发送测试网络程序,服务器端
💻 CPP
字号:
// RBaseStream.cpp: implementation of the CRBaseStream class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
//#include "RecvVideoM.h"
#include "RBaseStream.h"
//#include "MyVideoMpublic.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

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

CRBaseStream::CRBaseStream()
{
	m_hThread=NULL;
	m_nActiveXStatus = 0;
}

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

int CRBaseStream::Create(LPCTSTR strAddr, unsigned short uPort)
{
	m_bIsInited = FALSE;

	//多播地址端口
	m_socDest.sin_family=AF_INET;
	m_socDest.sin_addr.s_addr=inet_addr((char*)strAddr);
	m_socDest.sin_port=htons(uPort);
	//本地地址端口
	m_socLocal.sin_family=AF_INET;
	m_socLocal.sin_addr.s_addr=INADDR_ANY;
	//	m_socLocal.sin_port=m_socDest.sin_port;
	m_socLocal.sin_port=m_socDest.sin_port;

	if(m_sSocket.Startup(m_socLocal, m_socDest)<0 )//初始化多播端口
		return BS_FAIL;
	
    
	//初始化成功
	m_bIsInited=TRUE;
	
	 m_eventRecive=WSACreateEvent();	
	 WSAEventSelect(m_sSocket.GetSocket(),m_eventRecive,FD_READ);			//绑定事件m_hTerminateThread = CreateEvent(NULL,TRUE,FALSE,NULL);
	
	 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_nActiveXStatus = 1; 
    return BS_OK;	
}

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

void CRBaseStream::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_sSocket.Close();
   m_zStreamStatus=S_S_Closed;

}



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

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

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

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

⌨️ 快捷键说明

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