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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? socketclient.cpp

?? ◆◆◆ 《FTP、HTTP 多線程斷點(diǎn)續(xù)傳下載文件》◆◆◆ FlashGet、網(wǎng)絡(luò)螞蟻想必大家都很熟悉
?? CPP
字號(hào):
// SocketClient.cpp : implementation file
//

#include "stdafx.h"
#include "NetDownMTR.h"
#include "SocketClient.h"

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

#pragma comment(lib, "wsock32.lib")

/////////////////////////////////////////////////////////////////////////////
// CSocketClient

CSocketClient::CSocketClient ()
	: m_hEvtEndModule ( NULL )
	, m_bConnected ( FALSE )
{
}

CSocketClient::~CSocketClient()
{
}


// Do not edit the following lines, which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(CSocketClient, CSocket)
	//{{AFX_MSG_MAP(CSocketClient)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif	// 0

/////////////////////////////////////////////////////////////////////////////
// CSocketClient member functions

BOOL CSocketClient::Connect(LPCTSTR lpszHost, USHORT nPort)
{
	if ( !lpszHost || strlen(lpszHost) <= 0 || nPort < 1 )
		return FALSE;

	Close ();
	if ( !Create () ) return FALSE;
	m_bConnected = CSocket::Connect ( lpszHost, nPort );
	if ( !m_bConnected )
		Log ( L_WARNING, "Connect to [%s:%d] failed", lpszHost, nPort );
	return m_bConnected;
}

CString CSocketClient::GetDigitStrAtHead ( LPCTSTR lpszStr )
{
	if ( !lpszStr ) return "";
	CString csStr = lpszStr;
	csStr.TrimLeft(); csStr.TrimRight();
	CString csDigitStr;
	for ( int i=0; isdigit ( (int)csStr[i] ); i++ )
	{
		csDigitStr += csStr[i];
	}

	return csDigitStr;
}

//
// return : ------------------------------------------
//		> 0		-	回應(yīng)代碼
//		= 0		-	未讀到數(shù)據(jù)
//		= -1	-	網(wǎng)絡(luò)出錯(cuò)
//
int CSocketClient::GetResponse ( CString *pcsResponseStr/*=NULL*/, BOOL bBlock/*=TRUE*/ )
{
	if ( pcsResponseStr ) *pcsResponseStr = "";
	ASSERT ( m_hSocket != INVALID_SOCKET );
	CString csOneLine = GetOneLine ( m_csResponseHistoryString );
	if ( csOneLine.IsEmpty () )
	{
		char szRecvBuf[NET_BUFFER_SIZE] = {0};
		int nRet = Receive ( szRecvBuf, sizeof(szRecvBuf), bBlock );
		if ( nRet <= 0 )
		{
			if ( nRet < 0 ) Log ( L_WARNING, "Receive response data failed" );
			return nRet;
		}
		m_csResponseHistoryString += szRecvBuf;
		csOneLine = GetOneLine ( m_csResponseHistoryString );
		if ( csOneLine.IsEmpty () ) return -1;
	}

	if ( pcsResponseStr ) *pcsResponseStr = csOneLine;
	CString csRetCode = GetDigitStrAtHead ( csOneLine );

//	TRACE ( "收到服務(wù)器回應(yīng):%s\n", csOneLine );
	return atoi ( csRetCode );
}

BOOL CSocketClient::GetResponse ( int nVerifyCode, CString *pcsResponseStr/*=NULL*/ )
{
	CString csResponseStr;
	int nResponseCode = GetResponse ( &csResponseStr );
	if ( pcsResponseStr ) *pcsResponseStr = csResponseStr;
	if ( nResponseCode != nVerifyCode )
	{
		CString csMsg;
		csMsg.Format ( "Receive error response code : %s", csResponseStr );
		return FALSE;
	}
	return TRUE;
}

BOOL CSocketClient::SendString(LPCTSTR lpszData, ...)
{
	// 格式化
	char szDataBuf[NET_BUFFER_SIZE] = {0};
	va_list  va;
	va_start (va, lpszData);
	_vsnprintf ( szDataBuf, sizeof(szDataBuf)-1, (const char*)lpszData, va);
	va_end(va);

	TRACE ( "\n發(fā)送字符串:------------>>>\n%s\n\n", szDataBuf );
	return Send ( szDataBuf, strlen(szDataBuf) );
}

BOOL CSocketClient::Send(char *data, int size)
{
	ASSERT ( m_hEvtEndModule && m_hEvtEndModule != INVALID_HANDLE_VALUE );
	ASSERT ( m_hSocket != INVALID_SOCKET );
	if ( !data || size < 1 ) return TRUE;

	int nRemainBytes = size;
	int nSentTotalBytes = 0;
	int nSendFailedCount = 0;
	while ( nRemainBytes > 0 )
	{
		int nSentBytes = CSocket::Send ( data+nSentTotalBytes, nRemainBytes );
		if ( nSentBytes < 0 )
		{
			nSendFailedCount ++;
			if ( nSendFailedCount > 10 )
			{
				Log ( L_WARNING, "Send net data block failed" );
				m_bConnected = FALSE;
				return FALSE;
			}
			else
			{
				SLEEP_RETURN ( 100 );
			}
		}
		else
		{
			nRemainBytes -= nSentBytes;
			nSentTotalBytes += nSentBytes;
			nSendFailedCount = 0;
		}
	}

	return TRUE;

}

void CSocketClient::SetEventOfEndModule(HANDLE hEvtEndModule)
{
	m_hEvtEndModule = hEvtEndModule;
	ASSERT ( m_hEvtEndModule && m_hEvtEndModule != INVALID_HANDLE_VALUE );
}

// 從類似 "(192,168,0,2,4,31)" 字符串中得到IP地址和端口號(hào)
//
BOOL CSocketClient::GetIPAndPortByPasvString(LPCTSTR lpszPasvString, OUT CString &csIP, OUT USHORT &nPort)
{
	if ( !lpszPasvString ) return FALSE;
	char *p = strchr ( lpszPasvString, '(' );
	if ( !p ) return FALSE;
	CString csPasvStr = p+1, csTemp;
	int nPosStart = 0, nPosEnd = 0;
	int nMultiple = 0, nMantissa = 0;
	for ( int i=0; ; i++ )
	{
		nPosEnd = csPasvStr.Find ( ",", nPosStart );
		if ( nPosEnd < 0 )
		{
			if ( i == 5 )
			{
				nPosEnd = csPasvStr.Find ( ")", nPosStart );
				csTemp = csPasvStr.Mid ( nPosStart, nPosEnd-nPosStart );
				nMantissa = atoi ( csTemp );
				break;
			}
			else return FALSE;
		}
		csTemp = csPasvStr.Mid ( nPosStart, nPosEnd-nPosStart );
		csTemp.TrimLeft(); csTemp.TrimRight();
		if ( i < 4 )
		{
			if ( !csIP.IsEmpty () ) csIP += ".";
			csIP += csTemp;
		}
		else if ( i == 4 )
		{
			nMultiple = atoi ( csTemp );
		}
		else return FALSE;
		nPosStart = nPosEnd + 1;
	}
	nPort = nMultiple*256 + nMantissa;

	return TRUE;
}

//
// return : -----------------------------------------------------------
//		>= 0	-	收到的字節(jié)數(shù)
//		-1		-	失敗
//
int CSocketClient::Receive(char *szBuf, int size, BOOL bBlock/*=TRUE*/)
{
	if ( !szBuf || size < 0 ) return -1;
	int nReadSize = 0;
	if ( bBlock )
	{
		nReadSize = CSocket::Receive ( szBuf, size );
		if ( nReadSize <= 0 ) nReadSize = -1;
	}
	else
	{
		nReadSize = CAsyncSocket::Receive ( szBuf, size );
		if ( nReadSize < 0 )
		{
			if ( WSAEWOULDBLOCK  == GetLastError () )
				nReadSize = 0;
			else
				nReadSize = -1;
		}
	}

	if ( nReadSize == -1 )
	{
		m_bConnected = FALSE;
	}
	return nReadSize;
}

void CSocketClient::Disconnect()
{
//	ShutDown ( both );
	Close ();
	m_bConnected = FALSE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲最大色网站| 国产日韩欧美激情| 97精品国产露脸对白| 国产一区二区中文字幕| 精品在线视频一区| 精品系列免费在线观看| 国产一区二区三区四区五区入口| 免费的成人av| 韩国女主播成人在线观看| 激情文学综合网| 国产成人午夜高潮毛片| www.日韩精品| 在线观看网站黄不卡| 欧美日韩在线不卡| 欧美肥妇bbw| 欧美精品一区二区三区四区| 国产欧美一区二区精品秋霞影院| 国产日韩av一区二区| 亚洲乱码国产乱码精品精98午夜| 亚洲色欲色欲www在线观看| 亚洲乱码国产乱码精品精可以看 | 91麻豆成人久久精品二区三区| 99久久综合99久久综合网站| 在线观看欧美日本| 欧美一级生活片| 国产日韩欧美精品在线| 亚洲码国产岛国毛片在线| 午夜不卡av免费| 国产精品主播直播| 91久久精品日日躁夜夜躁欧美| 91精品国产手机| 中文字幕免费不卡| 日韩精品色哟哟| 国产91精品久久久久久久网曝门| 91久久线看在观草草青青| 国产精品三级电影| 亚洲男帅同性gay1069| 天天影视网天天综合色在线播放| 国产一区二区成人久久免费影院| hitomi一区二区三区精品| 欧美久久久久久久久中文字幕| 久久日一线二线三线suv| 亚洲综合一区在线| 国产91色综合久久免费分享| 欧美男生操女生| 亚洲国产激情av| 男女男精品视频| 色综合久久久久久久久| 欧美mv日韩mv| 日日欢夜夜爽一区| 91美女在线视频| 久久午夜羞羞影院免费观看| 五月天欧美精品| 91在线精品一区二区| 久久蜜桃一区二区| 五月婷婷欧美视频| 在线观看视频一区二区| 国产欧美精品日韩区二区麻豆天美| 三级在线观看一区二区| 91视频免费播放| 欧美国产精品一区| 国产综合色产在线精品| 日韩一区二区免费电影| 亚洲成a人v欧美综合天堂下载| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 日韩一卡二卡三卡| 一区二区三区色| 色综合一个色综合| 中文字幕一区三区| bt7086福利一区国产| 国产网红主播福利一区二区| 久久www免费人成看片高清| 欧美高清视频一二三区| 五月婷婷综合网| 51精品国自产在线| 日本三级亚洲精品| 91麻豆精品国产自产在线观看一区| 亚洲国产视频直播| 欧美视频精品在线观看| 亚洲一区二区三区三| 欧美色图激情小说| 五月天欧美精品| 日韩一区二区三区四区 | 中文字幕欧美激情一区| 国产99精品在线观看| 国产精品视频免费| www.在线欧美| 亚洲国产wwwccc36天堂| 欧美一区二区在线观看| 久99久精品视频免费观看| 精品国产乱码久久久久久1区2区| 国产一区二区三区四区五区入口| 欧美激情资源网| 一本久久a久久精品亚洲| 亚洲成av人综合在线观看| 日韩一区二区精品葵司在线 | 国产精品网曝门| 99精品偷自拍| 丝瓜av网站精品一区二区| 欧美一卡二卡三卡四卡| 国产精品亚洲а∨天堂免在线| 亚洲欧洲成人精品av97| 欧美日韩在线播放三区四区| 青青草91视频| 国产精品美日韩| 欧美日韩国产一二三| 国模大尺度一区二区三区| 国产精品视频第一区| 欧美色图片你懂的| 国产一区二区三区在线观看免费 | 精品国产一区二区三区久久久蜜月 | 亚洲三级在线观看| 538在线一区二区精品国产| 国产麻豆欧美日韩一区| 亚洲欧美日韩国产一区二区三区| 欧美日本韩国一区| 成人综合婷婷国产精品久久蜜臀 | 欧美一区二区三区爱爱| 成人午夜激情片| 日韩精品福利网| 综合激情成人伊人| 日韩一区二区三免费高清| 色综合一个色综合| 国产一区二区免费在线| 亚洲h动漫在线| 日韩毛片一二三区| 久久久久久久久久美女| 欧美日本韩国一区| 91黄视频在线| 成人动漫av在线| 久久国产生活片100| 亚洲国产精品久久人人爱| 亚洲欧美中日韩| 久久精品在这里| 欧美va在线播放| 51精品国自产在线| 欧美色图12p| 欧洲一区在线电影| 91蜜桃视频在线| 99精品欧美一区| 波多野结衣中文一区| 国产成人自拍网| 久草中文综合在线| 经典三级一区二区| 久久不见久久见中文字幕免费| 亚洲一区视频在线观看视频| 亚洲青青青在线视频| 日韩理论片在线| 国产精品久久久久久久久免费丝袜 | 18欧美乱大交hd1984| 日本一区二区不卡视频| 国产偷国产偷精品高清尤物| 亚洲精品一区二区三区四区高清| 51午夜精品国产| 欧美大尺度电影在线| 欧美大白屁股肥臀xxxxxx| 精品国产亚洲一区二区三区在线观看| 8x福利精品第一导航| 日韩欧美一级在线播放| 精品福利一二区| 国产精品萝li| 亚洲尤物视频在线| 日本伊人午夜精品| 国产九色sp调教91| 成人av手机在线观看| 91免费在线看| 欧美精品在线一区二区三区| 日韩一级高清毛片| 久久久国际精品| 亚洲丝袜自拍清纯另类| 一区二区三区久久| 日韩不卡手机在线v区| 国产一区二区精品久久91| 粉嫩av一区二区三区在线播放| aaa亚洲精品一二三区| 欧美色视频一区| 精品欧美一区二区在线观看| 久久久久久99久久久精品网站| 国产精品久久久久毛片软件| 亚洲综合久久久| 久久精品国产精品青草| 粉嫩aⅴ一区二区三区四区| 91亚洲国产成人精品一区二三| 欧美日韩中文国产| 精品美女一区二区三区| 国产精品黄色在线观看| 亚洲成a天堂v人片| 韩国中文字幕2020精品| 91视频免费观看| 精品国产a毛片| 一区二区三区资源| 国产一区三区三区| 在线视频国内自拍亚洲视频| 日韩精品一区二区三区三区免费| 亚洲国产精品ⅴa在线观看| 日韩和欧美一区二区三区| 成人免费高清在线| 日韩一区二区免费在线观看| 亚洲欧美精品午睡沙发| 国产一区 二区 三区一级|