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

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

?? clistensocket.cpp

?? VC源碼:《DirectShow開發指南》范例源代碼
?? CPP
字號:
// 
// CListenSocket.cpp
// 

#include "stdafx.h"
#include "CListenSocket.h"
#include "..\MediaServer\MediaServerDlg.h"

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

//////////////////////////////////////////////////////////////////////////////
CListenSocket::CListenSocket()
{
	m_hSocket     = NULL;
	m_bListening  = false;
	m_nLimitCount = 1;
	// Initialize thread event
	m_hThrdFinish = ::CreateEvent(NULL,    // pointer to security attributes 
	    						TRUE,      // flag for manual-reset event 
								FALSE,     // flag for initial state 
								NULL);     // pointer to event-object name

}

CListenSocket::~CListenSocket()
{
	// Stop listening first!
	if (m_bListening)
		StopListen();
	// Close the listen socket
	if (m_hSocket)
	{
		closesocket(m_hSocket);
		m_hSocket = NULL;
	}
	// Release the client sockets
	SOCKET  pSock;
	POSITION pos = m_ClientList.GetHeadPosition();
	while (pos)
	{
		pSock = (SOCKET) m_ClientList.GetNext(pos);
		closesocket(pSock);
	}
	m_ClientList.RemoveAll();
	// Release the thread event
	if (m_hThrdFinish)
	{
		CloseHandle(m_hThrdFinish);
		m_hThrdFinish = NULL;
	}
}

// Create a socket and place it in listening state
bool CListenSocket::Create(int inPort)
{
	// Already start listening...
	if (m_hSocket)
		return true;

	// Create a TCP socket
	m_hSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (m_hSocket == INVALID_SOCKET)
	{
		m_hSocket = NULL;
		return false;
	}

	// Settings on socket
	BOOL  sopt = TRUE;
	setsockopt(m_hSocket, IPPROTO_TCP, TCP_NODELAY, (char *)&sopt, sizeof(BOOL));
	setsockopt(m_hSocket, SOL_SOCKET, SO_DONTLINGER, (char *)&sopt, sizeof(BOOL));

	// Bind socket and listen
	struct in_addr bindAddr;
	bindAddr.S_un.S_addr = INADDR_ANY;
	SOCKADDR_IN   saddr;
	memset(&saddr, 0, sizeof(SOCKADDR_IN));
	saddr.sin_addr   = bindAddr;
	saddr.sin_family = AF_INET;
	saddr.sin_port   = htons((WORD)inPort);
	if (bind(m_hSocket, (SOCKADDR *)&saddr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR) 
	{
		closesocket(m_hSocket);
		m_hSocket = NULL;
		return false;
	}
	if (listen(m_hSocket, SOMAXCONN) !=0) 
	{
		closesocket(m_hSocket);
		m_hSocket = NULL;
		return false;
	}

	return true;
}

// Start up an independent thread to listen socket-connection blockingly
bool CListenSocket::StartListen(void)
{
	if (m_hSocket)
	{
		if (m_bListening)
			return true;

		// Start a thread
		m_bListening = true;
		ResetEvent(m_hThrdFinish);
		// Make socket blocking
		u_long   nonBlock = FALSE;
		ioctlsocket(m_hSocket, FIONBIO, &nonBlock);
		AfxBeginThread((AFX_THREADPROC)CListenSocket::ListeningThrd, this);
		return true;
	}
	return false;
}

void CListenSocket::StopListen(void)
{
	if (m_hSocket && m_bListening)
	{
		m_bListening = false;
		// Change socket from blocking to nonblocking to terminate listening thread
	//	u_long   nonBlock = TRUE;
	//	ioctlsocket(m_hSocket, FIONBIO, &nonBlock);
	//	WaitForSingleObject(m_hThrdFinish, 2000);
		// Close the socket
		closesocket(m_hSocket);
		m_hSocket    = NULL;	
	}
}

// Accept socket connection
bool CListenSocket::Accept(void)
{
	if (m_hSocket)
	{
		SOCKADDR_IN  saddr;
		int len = sizeof(SOCKADDR_IN);
		SOCKET accs = accept(m_hSocket, (SOCKADDR *)&saddr, &len);
		if (accs == INVALID_SOCKET)
			return false;
		
		// Connection limited checking...
		if (m_ClientList.GetCount() >= m_nLimitCount)
		{
			closesocket(accs);
			return true;
		}

		// Settings on the new created socket
		BOOL   sopt = TRUE;
		setsockopt(accs, IPPROTO_TCP, TCP_NODELAY, (char *)&sopt, sizeof(BOOL));
		setsockopt(accs, SOL_SOCKET, SO_DONTLINGER, (char *)&sopt, sizeof(BOOL));
		m_ClientList.AddTail(accs);
		// Send out a message
		::SendMessage(AfxGetMainWnd()->GetSafeHwnd(), WM_NEW_SOCKET, 0, 0);
		return true;
	}
	return false;
}

// Socket listening thread, blockingly...
UINT CListenSocket::ListeningThrd(void *pParam)
{
	CListenSocket * pListen = (CListenSocket *) pParam;
	if (pListen == NULL)
		return 0;

	while (pListen->m_bListening)
	{
		// If accept failure, exit
		if (!pListen->Accept())
			break;
	}

	SetEvent(pListen->m_hThrdFinish);
	return 1;
}

// Connection limited feature
void CListenSocket::SetLimitConnection(int inMax)
{
	m_nLimitCount = inMax;
}

int CListenSocket::GetLimitConnection(void)
{
	return m_nLimitCount;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
7777精品伊人久久久大香线蕉 | 91麻豆成人久久精品二区三区| 精品国产一区久久| 精品无人码麻豆乱码1区2区 | 从欧美一区二区三区| 国产午夜一区二区三区| 国产福利一区二区三区视频| 国产精品伦理在线| 91福利社在线观看| 免费在线视频一区| 国产欧美综合在线观看第十页| 成人黄色免费短视频| 综合久久久久久久| 91精品久久久久久蜜臀| 国产精品夜夜嗨| 亚洲精品成人少妇| 日韩一级精品视频在线观看| 国产成人免费在线| 亚洲国产三级在线| 精品美女在线播放| 色婷婷国产精品久久包臀| 午夜久久福利影院| 国产日韩精品一区二区三区| 91黄视频在线| 精品亚洲欧美一区| 中文字幕日韩av资源站| 3d动漫精品啪啪| 成人av电影在线播放| 日韩精品五月天| 国产精品入口麻豆九色| 6080午夜不卡| av电影天堂一区二区在线观看| 性久久久久久久久| 国产精品天天看| 欧美一区二区三区视频免费播放 | 欧美va亚洲va在线观看蝴蝶网| 丁香啪啪综合成人亚洲小说 | 欧美aa在线视频| 亚洲欧美日韩系列| 国产三级精品视频| 欧美一级精品大片| 一本久道久久综合中文字幕| 国产河南妇女毛片精品久久久| 午夜精品福利在线| 国产精品国产三级国产aⅴ原创 | 亚洲综合另类小说| 日本一区二区三区四区在线视频| 51久久夜色精品国产麻豆| www.亚洲国产| 国产精品456露脸| 捆绑调教一区二区三区| 亚洲伊人伊色伊影伊综合网| 国产精品午夜在线观看| 精品美女在线观看| 日韩精品一区二区在线| 欧美老年两性高潮| 欧美三级中文字幕在线观看| 99久久精品国产精品久久| 国产尤物一区二区| 卡一卡二国产精品| 美女国产一区二区三区| 午夜精品久久久久久不卡8050| 亚洲精品欧美综合四区| **性色生活片久久毛片| 欧美高清在线一区| 国产精品日韩成人| 中文一区二区在线观看| 亚洲国产精华液网站w| 久久精品视频免费观看| 久久久国产综合精品女国产盗摄| 精品毛片乱码1区2区3区| 精品欧美一区二区三区精品久久| 91精品国产手机| 日韩欧美视频在线| 日韩精品在线一区二区| 精品国产区一区| 日韩美一区二区三区| 精品国产网站在线观看| 久久久九九九九| 国产女主播一区| 中文字幕中文字幕一区二区| 日韩一区欧美小说| 最新中文字幕一区二区三区 | 青青国产91久久久久久| 天天影视网天天综合色在线播放| 亚洲福利一二三区| 毛片一区二区三区| 国模套图日韩精品一区二区| 国产精品18久久久久久vr| 国产精品1024| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 欧洲人成人精品| 欧美人伦禁忌dvd放荡欲情| 91精品国产综合久久精品| 日韩精品一区二区三区蜜臀| 国产亚洲va综合人人澡精品| 一区免费观看视频| 天天射综合影视| 国产一区二区三区国产| 成人美女视频在线观看| 在线欧美一区二区| 在线播放/欧美激情| 久久欧美中文字幕| 亚洲欧美中日韩| 日韩一区欧美二区| 国产精品自拍三区| 欧美日韩在线精品一区二区三区激情| 在线不卡a资源高清| 精品国产精品一区二区夜夜嗨| 欧美韩国日本一区| 午夜精品久久久久久久久| 国产在线视视频有精品| 91丨porny丨首页| 欧美日韩的一区二区| 久久久99精品免费观看| 亚洲乱码国产乱码精品精可以看 | 日韩精品一卡二卡三卡四卡无卡 | 91丨porny丨国产入口| 欧美精品1区2区3区| 国产区在线观看成人精品| 亚洲一卡二卡三卡四卡无卡久久| 久久精品国产精品亚洲综合| 成人av午夜影院| 日韩一区二区三区视频在线| 国产精品动漫网站| 韩国av一区二区三区在线观看| eeuss鲁片一区二区三区| 91麻豆精品国产自产在线观看一区| 国产精品乱子久久久久| 精品一区在线看| 欧美三级电影在线看| 国产精品另类一区| 日本不卡视频在线| 在线看国产日韩| 国产精品美日韩| 国产一区二区调教| 欧美人牲a欧美精品| 亚洲男人的天堂在线aⅴ视频| 狠狠色伊人亚洲综合成人| 欧美日韩在线亚洲一区蜜芽| 国产精品久久午夜夜伦鲁鲁| 精品一区二区三区在线播放| 欧美日韩中文精品| 亚洲欧美福利一区二区| 国产成人啪午夜精品网站男同| 日韩一区二区在线观看| 亚洲午夜激情av| 91蜜桃传媒精品久久久一区二区| 国产亚洲欧美色| 极品尤物av久久免费看| 91精品综合久久久久久| 天堂影院一区二区| 欧美日韩二区三区| 视频在线在亚洲| 欧美探花视频资源| 一区二区三区小说| 色综合欧美在线| 亚洲免费色视频| 91看片淫黄大片一级在线观看| 国产精品素人一区二区| 国产99久久久国产精品潘金网站| 欧美电影免费观看完整版| 久久精品国产在热久久| 日韩精品一区二区三区在线观看 | 国产调教视频一区| 国产jizzjizz一区二区| 国产日韩高清在线| 不卡av在线免费观看| 国产日韩欧美精品电影三级在线| 国产一区免费电影| 国产日韩高清在线| 成人三级伦理片| 亚洲欧美综合在线精品| 日本韩国欧美一区二区三区| 一区二区三区在线观看动漫| 色综合天天综合网国产成人综合天| 亚洲欧美日韩小说| 欧美日本国产视频| 久久精品国产第一区二区三区| 久久一留热品黄| 福利视频网站一区二区三区| 中文字幕一区二区三区精华液| 色综合久久99| 午夜精品视频在线观看| 欧美成人一区二区| 99久久伊人精品| 亚洲成a人v欧美综合天堂| 欧美一级片在线| 成人一区二区三区视频在线观看 | 久久综合久色欧美综合狠狠| 国产乱人伦偷精品视频不卡 | 亚洲一区在线播放| 777a∨成人精品桃花网| 精品系列免费在线观看| 国产精品伦理在线| 7878成人国产在线观看| 国产综合成人久久大片91| 一区免费观看视频| 欧美一区二区国产| 成人开心网精品视频|