www.pudn.com > AVChat0926.rar > CStreamSocket.h
//
// CStreamSocket.h
//
/************************************************************************/
/*
说明: 这个类(CstreamSocket)主要用来与CFilterNetReceiver协同工作,前者负责
接收网络媒体数据,然后把数据提交给CFilterNetReceiver的输出端子,然后
由输出端子直接提交给RendererFilter.
其中:
mSocketSender仅仅起到一个管理或一个封装功能,创建了一个用于发送UDP
数据的SOCKET.
本类的关键在于ReceiveLoop函数,其包含整个建立Graph和接收网络媒体
数据的整个过程.
*/
/************************************************************************/
#ifndef __H_CStreamSocket__
#define __H_CStreamSocket__
class CFilterNetReceiver;
class CStreamSocket
{
protected:
SOCKET mSocketSender; //for send
SOCKET mSocketReceiver; //for receive
WORD mTargetPort; //远程端口
DWORD mTargetIP; //远程IP
DWORD mLocalPort; //接收远程数据端口
DWORD mMulticastIP; //多播组地址
BOOL mIsReceiving; // For receiving
HANDLE mRcvThread;
CFilterNetReceiver * mOwnerFilter;
public:
CStreamSocket();
virtual ~CStreamSocket();
void SetTargetIP(DWORD inIP); // For client
DWORD GetTargetIP(void);
void SetTargetIP(const char * inIP);
void GetTargetIP(char * outIP);
void SetTargetPort(WORD inPort); // For client
WORD GetTargetPort(void);
void SetLocalPort(WORD inPort); // For server
WORD GetLocalPort(void);
void SetOwnerFilter(CFilterNetReceiver * inFilter);
public:
SOCKET GetSocketSender(void);
SOCKET GetSocketReceiver(void);
//create send and receiver
BOOL CreateSender(void);
void DeleteSender(void);
BOOL CreateReceiver(void);
void DeleteReceiver(void);
// Receive functions
BOOL StartReceiving(void);
void StopReceiving(void);
BOOL IsReceiving(void) { return mIsReceiving; };
protected:
static DWORD WINAPI ReceivingThrd(void * pParam);
virtual void ReceivingLoop(void);
};
#endif // __H_CStreamSocket__