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__