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

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

?? connectthread.cpp

?? 用套接字實現的ftp文件傳輸源代碼
?? CPP
字號:
/****************************************************************/
/*																*/
/*  CONNECTTHREAD.CPP											*/
/*																*/
/*  Implementation of the Connect Thread.						*/
/*	Created when a client logs on to the server and processes	*/
/*  'Send' commando's.											*/
/*																*/
/*  Programmed by Pablo van der Meer							*/
/*	http://www.pablovandermeer.nl								*/
/*																*/
/*  Last updated: 15 july 2002									*/
/*																*/
/****************************************************************/
//在ConnectThread.cpp文件中實現連接線程的創建,這個線程用來處理與客戶端的連接。
//當一個客戶登錄到服務器此線程將被創建,并處理"Send"命令。

#include "stdafx.h"
#include "FTPServerApp.h"
#include "FTPServer.h"
#include "ApplicationDlg.h"
#include "ConnectThread.h"

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


IMPLEMENT_DYNCREATE(CConnectThread, CWinThread)


/********************************************************************/
/*																	*/
/* Function name : CConnectThread::CConnectThread					*/
/* Description   : Constructor										*/
/*																	*/
/********************************************************************/
CConnectThread::CConnectThread()
{
	m_nReceivedBytes = 0;
	m_nSentBytes = 0;
	m_nTimerID = 0;
	m_LastDataTransferTime = CTime::GetCurrentTime();
}


/********************************************************************/
/*																	*/
/* Function name : CConnectThread::~CConnectThread					*/
/* Description   : Destructor										*/
/*																	*/
/********************************************************************/
CConnectThread::~CConnectThread()
{
}


/********************************************************************/
/*																	*/
/* Function name : InitInstance										*/		
/* Description   : Perform tasks that must be completed when the	*/
/*				   thread is first created.							*/
/*																	*/
/********************************************************************/
//初始化線程
BOOL CConnectThread::InitInstance()
{
	try
	{
		// 把CSocket對象與socket句柄綁定
		m_ConnectSocket.Attach(m_hSocket);
		m_ConnectSocket.m_pThread = this;

		CString strIPAddress;
		UINT nPort;
		m_ConnectSocket.GetPeerName(strIPAddress, nPort);

		// 通知服務器一個新的連接到達
		m_pWndServer->SendMessage(WM_THREADSTART, (WPARAM)this, 0);
		
		if (((CFTPServer *)m_pWndServer)->CheckMaxUsers())
		{
			m_ConnectSocket.SendResponse("421 Too many users are connected, please try again later.");
			PostThreadMessage(WM_QUIT,0,0);
		}
		else
		if (!((CFTPServer *)m_pWndServer)->IsIPAddressAllowed(strIPAddress))
		{
			m_ConnectSocket.SendResponse("421 Access denied, IP address was rejected by the server.");
			PostThreadMessage(WM_QUIT,0,0);
		}
		else
		{
			// 發送歡迎信息給客戶端
			m_ConnectSocket.SendResponse("220 %s", ((CFTPServer *)m_pWndServer)->GetWelcomeMessage());
			m_nTimerID = ::SetTimer(NULL, 0, 1000, TimerProc); 
		}
	}
	catch(CException *e) 
	{
		e->Delete();
	}
	return TRUE;
}


/********************************************************************/
/*																	*/
/* Function name : ExitInstance										*/		
/* Description   : Perform clean-up when the thread terminates.		*/
/*																	*/
/********************************************************************/
//線程終止
int CConnectThread::ExitInstance()
{
	CFTPServer *pWnd = (CFTPServer *)m_pWndServer;

	try
	{
		pWnd->m_CriticalSection.Lock();
		
		// 從鏈表中刪除當前線程
		POSITION pos = pWnd->m_ThreadList.Find(this);
		if(pos != NULL)
		{
			pWnd->m_ThreadList.RemoveAt(pos);
		}
		pWnd->m_CriticalSection.Unlock();    		

		//通知服務主循環
		pWnd->SendMessage(WM_THREADCLOSE, (WPARAM)this, 0);
	
	}
	catch(CException *e) 
	{
		pWnd->m_CriticalSection.Unlock();
		e->Delete();
	}
	return CWinThread::ExitInstance();
}


BEGIN_MESSAGE_MAP(CConnectThread, CWinThread)
	//{{AFX_MSG_MAP(CConnectThread)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_THREADMSG, OnThreadMessage)
END_MESSAGE_MAP()



/********************************************************************/
/*																	*/
/* Function name : IncSentBytes										*/		
/* Description   : Increment number of bytes sent by the server.	*/
/*																	*/
/********************************************************************/
void CConnectThread::IncSentBytes(int nBytes)
{
	m_LastDataTransferTime = CTime::GetCurrentTime();
	m_nSentBytes += nBytes;
	// notify server class
	m_pWndServer->PostMessage(WM_THREADMSG, (WPARAM)0, (LPARAM)nBytes);
}


/********************************************************************/
/*																	*/
/* Function name : IncReceivedBytes									*/		
/* Description   : Increment number of bytes received by the server.*/
/*																	*/
/********************************************************************/
void CConnectThread::IncReceivedBytes(int nBytes)
{
	m_LastDataTransferTime = CTime::GetCurrentTime();
	m_nReceivedBytes += nBytes;
	// notify server class
	m_pWndServer->PostMessage(WM_THREADMSG, (WPARAM)1, (LPARAM)nBytes);
}


/********************************************************************/
/*																	*/
/* Function name : UpdateStatistic									*/	
/* Description   : Specific statistics has been changed.			*/
/*																	*/
/********************************************************************/
void CConnectThread::UpdateStatistic(int nType)
{
	// notify server class
	m_pWndServer->PostMessage(WM_THREADMSG, (WPARAM)2, (LPARAM)nType);
}


/********************************************************************/
/*																	*/
/* Function name : OnThreadMessage									*/		
/* Description   : Thread message received.							*/
/*																	*/
/********************************************************************/
LRESULT CConnectThread::OnThreadMessage(WPARAM wParam, LPARAM lParam)
{
	switch(wParam)
	{
		case 0: // destroy data socket
			m_ConnectSocket.DestroyDataConnection();
			break;
		case 1: // quit !
			PostThreadMessage(WM_QUIT,0,0);
			break;
		default:
			break;
	}
	return 0L;
}


/********************************************************************/
/*																	*/
/* Function name : TimerProc										*/	
/* Description   : Callback function for timer.						*/
/*																	*/
/********************************************************************/
VOID CALLBACK CConnectThread::TimerProc(HWND hwnd, UINT uMsg, UINT uIDEvent, DWORD dwTime)
{
	CConnectThread *pThread = (CConnectThread *)AfxGetThread();

	if (uIDEvent == pThread->m_nTimerID)
	{
		int nConnectionTimeout = ((CFTPServer *)pThread->m_pWndServer)->GetTimeout();
		// check for connection timeout
		CTime time = pThread->m_LastDataTransferTime;
		time += CTimeSpan(0, 0, nConnectionTimeout, 0);
		if (time < CTime::GetCurrentTime())
		{
			pThread->m_ConnectSocket.SendResponse("426 Connection timed out, aborting transfer");
			pThread->PostThreadMessage(WM_QUIT,0,0);
		}
	}
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网站最新网址| 欧美大片一区二区三区| 欧美日韩午夜影院| 久久久99久久精品欧美| 亚洲第一主播视频| 国产精品自拍在线| 欧美色图激情小说| 国产精品久久一级| 激情图片小说一区| 5566中文字幕一区二区电影| 日韩一区在线看| 国产老妇另类xxxxx| 欧美日韩成人综合在线一区二区| 国产精品久久久久久妇女6080| 日本网站在线观看一区二区三区| 色综合天天天天做夜夜夜夜做| 精品sm捆绑视频| 日韩福利视频网| 欧美午夜不卡视频| 椎名由奈av一区二区三区| 精品一区二区在线看| 欧美一级xxx| 日韩高清在线一区| 欧美久久久久免费| 亚洲综合区在线| 在线一区二区三区| 亚洲欧洲www| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 91麻豆成人久久精品二区三区| 国产欧美日韩麻豆91| 国产麻豆欧美日韩一区| 久久久久久麻豆| 国产麻豆一精品一av一免费| 亚洲精品在线免费观看视频| 精品综合久久久久久8888| 精品久久久久一区| 国产一区二区精品久久99| 久久久美女毛片| 成人精品亚洲人成在线| 国产精品美女一区二区| 北条麻妃国产九九精品视频| 国产精品乱人伦一区二区| 丁香桃色午夜亚洲一区二区三区| 亚洲国产成人一区二区三区| 91在线你懂得| 免费高清在线一区| 欧美亚洲国产bt| 欧美人体做爰大胆视频| 国产尤物一区二区在线| www.av精品| 亚洲高清三级视频| 日韩一区在线免费观看| 久久久久久麻豆| 欧美一区二区三区在线观看视频 | 成人福利电影精品一区二区在线观看| 天涯成人国产亚洲精品一区av| 亚洲精品视频自拍| 国产喷白浆一区二区三区| 91麻豆精品国产无毒不卡在线观看| 97久久精品人人爽人人爽蜜臀 | 偷拍一区二区三区| 亚洲欧美一区二区不卡| 国产日韩在线不卡| 久久综合久久综合久久| 欧美一级黄色片| 在线不卡一区二区| 欧美日韩高清一区二区三区| 欧美在线啊v一区| 色综合久久久久久久| 99视频有精品| 一道本成人在线| 色成人在线视频| 在线精品视频一区二区三四| 91网站黄www| k8久久久一区二区三区 | 99国产欧美另类久久久精品| 成人av免费在线| www.一区二区| 一本在线高清不卡dvd| 一本色道久久综合亚洲aⅴ蜜桃| 色综合中文字幕国产 | 91丝袜国产在线播放| jlzzjlzz欧美大全| 91丨porny丨户外露出| 波多野结衣在线一区| 99久久精品费精品国产一区二区| 99久久亚洲一区二区三区青草| 91网站在线播放| 欧美在线视频全部完| 欧美三级视频在线观看| 欧美日韩精品福利| 91精品国产麻豆国产自产在线 | 国产日韩精品一区二区三区| 欧美国产精品一区二区三区| 亚洲欧洲日产国产综合网| 亚洲精品综合在线| 亚洲国产精品精华液网站| 热久久免费视频| 国产一区二区精品久久| 成人国产在线观看| 欧美四级电影网| 精品久久久久久久人人人人传媒 | 国产精品99久久久久久有的能看 | 极品少妇一区二区| 粉嫩一区二区三区性色av| 99久久精品国产毛片| 欧美疯狂做受xxxx富婆| 久久新电视剧免费观看| 亚洲婷婷在线视频| 天涯成人国产亚洲精品一区av| 国产在线精品一区二区| 91免费版在线| 欧美不卡一二三| 亚洲视频小说图片| 日本一不卡视频| 99久久夜色精品国产网站| 欧美精品v国产精品v日韩精品| 国产亚洲欧美在线| 亚洲一二三区不卡| 国产成人高清视频| 欧美日韩三级一区二区| 国产亚洲成aⅴ人片在线观看| 亚洲卡通动漫在线| 久久99精品一区二区三区三区| 91网址在线看| 久久久综合视频| 日韩黄色片在线观看| www.亚洲国产| 欧美变态tickle挠乳网站| 亚洲品质自拍视频| 国产精品综合av一区二区国产馆| 欧美色手机在线观看| 欧美激情一区二区三区全黄 | 欧美精品一区二| 一级女性全黄久久生活片免费| 国产一区欧美二区| 欧美精品色综合| 一区二区三区在线视频播放| 国产精品亚洲视频| 91麻豆精品国产91久久久更新时间 | 久久亚洲综合av| 日韩不卡在线观看日韩不卡视频| 色综合久久综合网欧美综合网| 国产日产欧美精品一区二区三区| 裸体在线国模精品偷拍| 一本久道中文字幕精品亚洲嫩| 欧美高清在线精品一区| 精品一二线国产| 日韩视频免费观看高清完整版在线观看| 亚洲欧美国产77777| 成人激情av网| 国产目拍亚洲精品99久久精品| 久色婷婷小香蕉久久| 欧美女孩性生活视频| 亚洲国产综合人成综合网站| 色婷婷狠狠综合| 中文无字幕一区二区三区| 国产美女一区二区| 久久中文娱乐网| 国产在线视频精品一区| 欧美xxxxx牲另类人与| 久久激情五月婷婷| 欧美一区二区三级| 日日摸夜夜添夜夜添亚洲女人| 欧美日韩视频在线一区二区 | 麻豆91在线看| 日韩美一区二区三区| 日韩福利视频网| 日韩视频一区在线观看| 蜜桃av一区二区三区| 日韩欧美一级精品久久| 美女视频一区在线观看| 日韩欧美资源站| 激情综合一区二区三区| 精品国产亚洲在线| 国产一区二区三区香蕉| 欧美激情一二三区| 91在线一区二区三区| 亚洲综合图片区| 欧美老女人在线| 国产一区美女在线| 中文字幕av一区二区三区免费看 | 亚洲国产精品视频| 欧美视频一区在线| 免费成人在线观看| 精品噜噜噜噜久久久久久久久试看| 精品一区二区三区在线观看 | 日韩一区二区三区高清免费看看 | 国产一区二区精品久久91| 久久久91精品国产一区二区精品| 成人精品亚洲人成在线| 中文字幕视频一区| 91免费在线播放| 日韩国产欧美在线播放| 精品国产伦一区二区三区免费| 国产**成人网毛片九色| 自拍偷自拍亚洲精品播放| 欧美日韩高清一区二区不卡| 国产一区二区三区在线观看精品| 中文字幕在线不卡一区二区三区|