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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? clistensocket.cpp

?? 《DirectShow開(kāi)發(fā)指南》的隨書(shū)原代碼
?? CPP
字號(hào):
// 
// 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;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人av网| 久国产精品韩国三级视频| 欧美一区二区国产| 不卡视频在线观看| 麻豆精品新av中文字幕| 亚洲摸摸操操av| 国产亚洲精品超碰| 678五月天丁香亚洲综合网| 91丝袜美女网| 国产成人精品免费视频网站| 蜜臀国产一区二区三区在线播放| 一区二区在线观看视频| 国产天堂亚洲国产碰碰| 日韩亚洲欧美在线| 欧美日韩在线三级| 一本色道a无线码一区v| 丁香婷婷综合激情五月色| 久久国产精品72免费观看| 日韩在线一二三区| 一卡二卡欧美日韩| 亚洲欧美偷拍三级| 国产精品免费丝袜| 久久精品视频在线看| 日韩精品一区二区在线观看| 欧美日韩不卡一区二区| 在线看不卡av| 91黄视频在线| 欧美做爰猛烈大尺度电影无法无天| www.亚洲在线| 国产 欧美在线| 成人一区二区三区视频在线观看| 国产综合色视频| 国内成人精品2018免费看| 久久国产尿小便嘘嘘尿| 久久精品国产在热久久| 蜜臀av性久久久久av蜜臀妖精| 日韩中文欧美在线| 蜜臀va亚洲va欧美va天堂| 秋霞影院一区二区| 久久精工是国产品牌吗| 久久精品国产77777蜜臀| 免费欧美日韩国产三级电影| 男男gaygay亚洲| 久久爱另类一区二区小说| 极品美女销魂一区二区三区| 国产在线精品不卡| 粉嫩av亚洲一区二区图片| 国产成人综合视频| www.欧美精品一二区| 91亚洲精品久久久蜜桃| 欧美午夜宅男影院| 91精品国产综合久久福利| 欧美大片在线观看一区| 国产亚洲精品超碰| 亚洲女人****多毛耸耸8| 一区二区三区欧美在线观看| 亚洲成av人影院在线观看网| 免费看日韩精品| 国产成人无遮挡在线视频| 91一区一区三区| 欧美日本在线看| 久久综合色8888| 国产精品久久久久久福利一牛影视 | 欧美不卡在线视频| 国产日产亚洲精品系列| 亚洲欧美日韩在线| 偷拍亚洲欧洲综合| 国产一区二区不卡在线| 91视视频在线直接观看在线看网页在线看| 欧美自拍偷拍午夜视频| 日韩欧美一区二区不卡| 国产精品乱人伦一区二区| 亚洲一区二区三区视频在线播放| 免费成人在线观看视频| 成人福利电影精品一区二区在线观看| 91久久精品一区二区| 日韩欧美久久一区| 国产精品久久久久婷婷二区次| 亚洲第一主播视频| 国产精品91xxx| 欧美日韩精品一区二区三区蜜桃| 久久嫩草精品久久久精品| 亚洲卡通动漫在线| 狠狠色丁香婷婷综合久久片| 一本久久a久久免费精品不卡| 91精品国产aⅴ一区二区| 国产精品久久久久国产精品日日| 日韩av不卡一区二区| 99精品久久只有精品| 日韩你懂的在线观看| 亚洲日本护士毛茸茸| 久热成人在线视频| 欧美艳星brazzers| 欧美经典三级视频一区二区三区| 亚洲va中文字幕| aaa欧美大片| 久久久久久夜精品精品免费| 亚洲第一搞黄网站| 99re亚洲国产精品| 久久久久久久电影| 日韩福利视频导航| 在线免费观看成人短视频| 国产色91在线| 美女网站在线免费欧美精品| 欧美综合色免费| 中文字幕在线观看不卡| 国产综合色在线| 欧美一级片在线看| 亚洲丰满少妇videoshd| 91免费观看视频在线| 欧美激情一区二区三区全黄| 裸体在线国模精品偷拍| 欧美日韩高清一区| 亚洲一区二区三区中文字幕在线 | 丁香天五香天堂综合| 日韩欧美国产成人一区二区| 亚洲国产精品一区二区久久恐怖片| 白白色 亚洲乱淫| 欧美国产在线观看| 高清久久久久久| 久久久不卡网国产精品二区| 美女视频第一区二区三区免费观看网站 | 亚洲美女视频在线| 成人av午夜电影| 中文字幕一区不卡| 成人av电影在线播放| 中文字幕精品—区二区四季| 国产福利不卡视频| 国产色产综合产在线视频| 国产精品一区二区久久精品爱涩| 精品国产网站在线观看| 久久激情综合网| 精品免费一区二区三区| 激情图区综合网| www精品美女久久久tv| 国内精品嫩模私拍在线| 国产色爱av资源综合区| 成人激情图片网| 国产精品国产三级国产有无不卡| 99久久伊人网影院| 亚洲精品水蜜桃| 欧美三级电影精品| 免费观看一级特黄欧美大片| 欧美刺激午夜性久久久久久久 | 色婷婷国产精品久久包臀| 亚洲手机成人高清视频| 日本久久一区二区三区| 亚洲妇熟xx妇色黄| 欧美一级在线视频| 国产一区二区视频在线播放| 国产精品美女久久久久久久| 色伊人久久综合中文字幕| 亚洲一二三级电影| 欧美一区二区三区人| 国产真实乱对白精彩久久| 国产欧美日韩三级| 色天天综合色天天久久| 午夜日韩在线电影| 精品成人在线观看| 99久久精品情趣| 五月天网站亚洲| www国产精品av| 色先锋aa成人| 麻豆成人综合网| 国产精品国产三级国产a| 欧美性猛交xxxx黑人交| 另类小说色综合网站| 中文字幕一区二区三区在线不卡| 欧美视频在线一区二区三区 | 日本午夜精品一区二区三区电影| 欧美videos大乳护士334| 成人高清免费观看| 亚洲18女电影在线观看| 久久精品视频一区二区三区| 色综合久久中文综合久久97| 日韩va欧美va亚洲va久久| 中文字幕av资源一区| 欧美日韩国产天堂| 国产精品系列在线播放| 亚洲风情在线资源站| 亚洲国产精品精华液2区45| 欧美日韩久久久一区| 国产精品亚洲视频| 亚洲国产一区二区在线播放| 国产午夜精品一区二区| 欧美日韩国产精选| 成人国产亚洲欧美成人综合网 | 中文字幕视频一区| 日韩视频免费直播| 91麻豆免费在线观看| 精品一区二区三区免费播放| 樱花影视一区二区| 午夜精品久久久久久久久久| 国产丝袜欧美中文另类| 7777精品伊人久久久大香线蕉超级流畅| 成人黄色777网| 狠狠狠色丁香婷婷综合激情 | 精品免费一区二区三区| 欧美三级视频在线播放| 99re这里都是精品|