亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cserversocket.cpp

?? 采用DirecShow通過網絡傳輸實現遠程視頻動態播放,
?? CPP
字號:
// 
// CServerSocket.cpp
// 

#include "stdafx.h"
#include <streams.h>
#include "CServerSocket.h"
#include "GlobalDefs.h"

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

//////////////////////////////////////////////////////////////////////////////
CServerSocket::CServerSocket()
{
	mListener  = INVALID_SOCKET;
    mAccepted = INVALID_SOCKET;
	mIsReceiving = FALSE;
	mIsConnected = FALSE;
	mRcvThread   = NULL;
	mLsnThread   = NULL;
	mListenPort  = 10080;
	mIsListening = FALSE;

}

CServerSocket::~CServerSocket()
{

	DeleteAccepted();
	DeleteListener();
	StopListening();
	StopReceiving();
}

SOCKET CServerSocket::GetSocket(void)
{	
	SOCKET ret   = mAccepted;
	mAccepted      = INVALID_SOCKET;
	return ret;		
}
BOOL CServerSocket::Create(void)
{
	DeleteListener();

	int  val  = 0;
	BOOL pass = FALSE;

	mListener = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (mListener != INVALID_SOCKET)
	{
		// Settings on socket
		BOOL  sopt = TRUE;
		setsockopt(mListener, IPPROTO_TCP, TCP_NODELAY, 
			(char *)&sopt, sizeof(BOOL));
		setsockopt(mListener, SOL_SOCKET, SO_DONTLINGER, 
			(char *)&sopt, sizeof(BOOL));

		// Bind socket and listen
		SOCKADDR_IN  addr;
		memset(&addr, 0, sizeof(SOCKADDR_IN));
		addr.sin_family      = AF_INET;
		addr.sin_addr.s_addr = htonl(INADDR_ANY);
		addr.sin_port        = htons(mListenPort);
		val = bind(mListener, (struct sockaddr*) &addr, sizeof(addr));
		pass = (val != SOCKET_ERROR);
	}

	if (pass)
	{
		// Put the socket into the listening status
		val = listen(mListener, SOMAXCONN);
		pass = (val != SOCKET_ERROR);
	}

	if (!pass)
	{
		DeleteListener();
	}
	return pass;
}
BOOL CServerSocket::StartListening(void)
{
	// Create socket if necessary
	if (mListener == INVALID_SOCKET)
	{
		Create();
	}

	if (mListener != INVALID_SOCKET)
	{
		if (mIsListening)
		{
			return TRUE;
		}

		DWORD threadID = 0;
		mLsnThread = CreateThread(NULL, 0, ListeningThrd, 
			this, 0, &threadID);
		return (mLsnThread != NULL);
	}

	return FALSE;
}
DWORD WINAPI CServerSocket::ListeningThrd(void *pParam)
{
	ASSERT(pParam);

	CServerSocket * pListen = (CServerSocket *) pParam;
	pListen->mIsListening  = TRUE;
	while (pListen->mIsListening)
	{
		if (!pListen->Accept())
		{
			pListen->mIsListening = FALSE;
			break;
		}
	}

	return 1;
}
BOOL CServerSocket::Accept(void)
{
	if (mListener != INVALID_SOCKET)
	{
		SOCKADDR_IN  saddr;
		int len = sizeof(SOCKADDR_IN);
		SOCKET accepted = accept(mListener, (SOCKADDR *)&saddr, &len);
		if (accepted == INVALID_SOCKET)
		{
			return FALSE;
		}
		
		if (mAccepted == INVALID_SOCKET)
		{
			mAccepted = accepted;
			// Settings on socket
			BOOL sopt = TRUE;
			setsockopt(accepted, IPPROTO_TCP, TCP_NODELAY, 
				(char *)&sopt, sizeof(BOOL));
			setsockopt(accepted, SOL_SOCKET, SO_DONTLINGER, 
				(char *)&sopt, sizeof(BOOL));
			// Send a message to the controller
			Broadcast(msg_NewSocketAccepted);
			return TRUE;
			
		}
		else
		{
			closesocket(accepted);
		}
	}
	return FALSE;
}

BOOL CServerSocket::StartReceiving(void)
{
	if (mAccepted != INVALID_SOCKET)
	{
		if (mIsReceiving)
		{
			return TRUE;
		}

		DWORD threadID = 0;
		mRcvThread = CreateThread(NULL, 0, ReceivingThrd, 
			this, 0, &threadID);
		return (mRcvThread != NULL);
	}
	return FALSE;
}

void CServerSocket::StopReceiving(void)
{
	if (mIsReceiving)
	{
		DeleteAccepted();
		if (mRcvThread != NULL) 
		{
            WaitForSingleObject(mRcvThread, INFINITE);
			mRcvThread = NULL;
		}
	}
}

DWORD WINAPI CServerSocket::ReceivingThrd(void * pParam)
{
	CServerSocket * pSock = (CServerSocket *) pParam;
	if (pSock)
	{
		pSock->mIsReceiving = TRUE;
		pSock->ReceivingLoop();
		return 1;
	}	
	return 0;
}
void CServerSocket::ReceivingLoop(void)
{
	char buffer[MAX_COMMAND_SIZE];
	long bytes = 0;

	mIsReceiving = TRUE;
	while (mIsReceiving)
	{				
		bytes = recv(mAccepted, (char *)buffer, MAX_COMMAND_SIZE, 0);
		if (bytes == SOCKET_ERROR || bytes == 0)
		{
			mIsReceiving = FALSE;
		}
		else
		{
			Broadcast(msg_CommandReceived, buffer);
		}
	}

}
BOOL CServerSocket::Send(const char * inBuffer, long inLength)
{
	if(mAccepted)
	{

		int val = send(mAccepted, inBuffer, inLength, 0);
		return (val != SOCKET_ERROR);
	}
	else
		return FALSE;
}
void CServerSocket::DeleteListener(void)
{
	if (mListener != INVALID_SOCKET)
	{
		closesocket(mListener);
		mListener = INVALID_SOCKET;
	}
}

void CServerSocket::DeleteAccepted(void)
{
	
		if (mAccepted != INVALID_SOCKET)
		{
			closesocket(mAccepted);
			mAccepted = INVALID_SOCKET;
		}
	
}	
void CServerSocket::StopListening(void)
{
	if (mListener != INVALID_SOCKET && mIsListening)
	{
		DeleteListener();
		// Make sure the receiving thread has been terminated 
		if (mLsnThread != NULL) 
		{
            WaitForSingleObject(mLsnThread, INFINITE);
			mLsnThread = NULL;
		}
	}
}
void CServerSocket::SetListenPort(WORD inPort)
{
	mListenPort = inPort;
}

WORD CServerSocket::GetListenPort(void)
{
	return mListenPort;
}
BOOL CServerSocket::IsSocketReady(void)
{

		if (mAccepted == INVALID_SOCKET)
		{
			return FALSE;
		}
	
	return TRUE;
}
//DEL void CServerSocket::Detach(void)
//DEL {
//DEL 	if (mAccepted != INVALID_SOCKET)
//DEL 	{
//DEL 		closesocket(mAccepted);
//DEL 		mAccepted = INVALID_SOCKET;
//DEL 		mIsConnected = FALSE;
//DEL 	}
//DEL }

void CServerSocket::SetSocket(SOCKET inSocket)
{
	mAccepted=inSocket;
	mIsConnected=TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本午夜精品一区二区三区电影| 国产一区二区中文字幕| 久久99精品国产| 91日韩一区二区三区| 欧美日韩成人综合天天影院| 欧美激情在线看| 麻豆精品蜜桃视频网站| 91黄视频在线| 中文在线免费一区三区高中清不卡| 日韩国产精品久久| 日本韩国欧美三级| 国产精品久久久久婷婷| 国内久久婷婷综合| 91精品国产aⅴ一区二区| 一区二区三区四区av| a美女胸又www黄视频久久| 久久精品一区二区| 久久国产福利国产秒拍| 91麻豆精品国产无毒不卡在线观看| 一区二区在线看| 99久久久精品免费观看国产蜜| 国产欧美日韩视频一区二区| 九九**精品视频免费播放| 日韩欧美国产综合一区| 日韩国产在线观看| 欧美一区二区视频观看视频 | 色先锋久久av资源部| 欧美韩国日本综合| 成人亚洲精品久久久久软件| 久久久精品免费免费| 国内精品伊人久久久久av一坑| 欧美va亚洲va| 国精产品一区一区三区mba视频| 日韩欧美电影在线| 精品亚洲成a人| 久久免费偷拍视频| 成人性生交大片免费看视频在线 | 一区二区三区毛片| 欧美性猛片xxxx免费看久爱| 性做久久久久久免费观看| 7777精品伊人久久久大香线蕉完整版 | 亚洲婷婷综合色高清在线| 99久久国产免费看| 亚洲主播在线观看| 日韩一区二区精品葵司在线| 狠狠色综合播放一区二区| 国产午夜亚洲精品羞羞网站| 国产suv精品一区二区883| 中文字幕在线不卡| 在线观看视频一区二区| 人禽交欧美网站| 久久久亚洲精品石原莉奈| 99久久精品久久久久久清纯| 亚洲成a人在线观看| 欧美一区二区三区免费在线看| 久久国产精品99久久久久久老狼| 国产欧美一区二区精品秋霞影院| 99re热这里只有精品视频| 亚洲国产日韩在线一区模特| 精品国产电影一区二区| 丁香激情综合国产| 午夜电影一区二区| xnxx国产精品| 91视频一区二区三区| 日本伊人色综合网| 国产精品理伦片| 91麻豆精品国产91久久久久久久久| 日本不卡视频在线| 国产精品久久免费看| 3atv在线一区二区三区| 粉嫩aⅴ一区二区三区四区五区| 亚洲国产日韩精品| 国产日韩精品久久久| 欧美日韩国产首页| 国产成人午夜精品影院观看视频| 亚洲国产美国国产综合一区二区| 久久精品在这里| 欧美久久高跟鞋激| 丁香六月久久综合狠狠色| 日本欧美一区二区三区乱码| 亚洲男人的天堂网| 久久久久久久久久久黄色| 欧美精品在线视频| 波多野结衣中文字幕一区| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲综合色丁香婷婷六月图片| 2021中文字幕一区亚洲| 欧美日韩在线电影| 成人app网站| 国产乱子伦一区二区三区国色天香| 亚洲午夜三级在线| 国产精品人成在线观看免费| 精品国一区二区三区| 制服.丝袜.亚洲.另类.中文 | 日韩欧美久久久| 欧美色视频在线| 99re成人在线| 国产成人免费网站| 日韩不卡一区二区| 天天综合色天天综合色h| 亚洲综合成人在线| 亚洲精品ww久久久久久p站| 国产精品久久久久久久久动漫| 国产视频在线观看一区二区三区 | 91精品久久久久久久91蜜桃| 91官网在线观看| 91影视在线播放| 99视频国产精品| 99精品国产91久久久久久| 大白屁股一区二区视频| 高清在线成人网| 国产a区久久久| 国产高清一区日本| 国内久久婷婷综合| 国产乱码字幕精品高清av| 国产精品影视在线观看| 国产超碰在线一区| 国产成人自拍在线| 成人看片黄a免费看在线| 国产成人精品www牛牛影视| 高清日韩电视剧大全免费| 成人国产精品免费网站| 91视频.com| 欧美私模裸体表演在线观看| 制服丝袜中文字幕一区| 日韩一区二区三区在线| 久久久蜜桃精品| 国产精品久久久久久久久图文区 | 欧美日韩另类一区| 在线播放视频一区| 欧美成人猛片aaaaaaa| 国产视频不卡一区| 亚洲日本va午夜在线电影| 亚洲综合精品自拍| 精品一区在线看| av在线这里只有精品| 欧美少妇性性性| 久久―日本道色综合久久| 国产亚洲午夜高清国产拍精品| 国产精品久久久久久久久久久免费看| 亚洲精品免费看| 日韩国产精品久久| 成人精品电影在线观看| 欧美日韩在线综合| 久久奇米777| 亚洲免费观看高清完整| 天堂成人国产精品一区| 国产美女视频一区| 91官网在线观看| 国产午夜一区二区三区| 亚洲一区二区不卡免费| 国产精品小仙女| 欧美吞精做爰啪啪高潮| 国产香蕉久久精品综合网| 亚洲一二三四久久| 国产精品一区二区三区四区| 在线观看亚洲a| 欧美韩国日本一区| 喷白浆一区二区| 色综合久久久久| 久久婷婷成人综合色| 亚洲第一福利一区| 国产成人亚洲综合色影视| 91精品国产91久久久久久一区二区| 国产性天天综合网| 免费在线观看不卡| 欧美中文字幕一区二区三区亚洲| 欧美国产精品劲爆| 免费看日韩精品| 欧美午夜在线一二页| 成人免费视频在线观看| 国产一区二区三区免费播放| 91精品国产综合久久福利| 综合久久综合久久| 国产传媒久久文化传媒| 欧美一级搡bbbb搡bbbb| 一区二区在线免费| 99久久精品一区二区| 国产亚洲人成网站| 久久99久久久欧美国产| 欧美精品免费视频| 一区二区欧美精品| 91一区在线观看| 中文子幕无线码一区tr| 国产精品亚洲一区二区三区在线 | 欧美久久久影院| 亚洲一区视频在线观看视频| a4yy欧美一区二区三区| 国产欧美一区二区精品性色超碰| 狠狠色丁香久久婷婷综| 日韩欧美国产系列| 日本免费新一区视频| 在线播放日韩导航| 日韩av电影一区| 欧美成人一区二区三区片免费 | 久久午夜老司机| 精品一区二区三区在线播放视频| 日韩欧美国产综合一区| 蜜桃视频一区二区三区| 日韩午夜激情视频|