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

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

?? filesenddlg.cpp

?? a dsp dll and sample
?? CPP
字號:
// FileSendDlg.cpp : implementation file
//

#include "stdafx.h"
#include "FileSendDlg.h"
#include "DSPFile.h"
#include "DSPSpider.h"
#include "SpiderWnd.h"
#include "ListenType.h"

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

/////////////////////////////////////////////////////////////////////////////
// FileSendDlg dialog


FileSendDlg::FileSendDlg(CWnd* pParent /*=NULL*/)
	: CDialog(FileSendDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(FileSendDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	this->m_phListenThreadParam	=NULL;
	this->m_sockConnect			=INVALID_SOCKET;
}


void FileSendDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(FileSendDlg)
	DDX_Control(pDX, IDC_STATIC_FILESIZE, m_strFilesize);
	DDX_Control(pDX, IDC_STATIC_FILENAME, m_strFilename);
	DDX_Control(pDX, IDC_STATIC_CURRLEN, m_strCurrLen);
	DDX_Control(pDX, IDC_PROGRESS1, m_progress);
	DDX_Control(pDX, IDC_COMBOIP, m_comboIP);
	DDX_Control(pDX, IDC_CHECKNET, m_checkNet);
	DDX_Control(pDX, IDC_CHECKCRC, m_checkCrc);
	DDX_Control(pDX, IDC_BTNSEND, m_btnSend);
	DDX_Control(pDX, IDC_BTNLISTEN, m_btnListen);
	DDX_Control(pDX, IDC_BTNCONNECT, m_btnConnect);
	DDX_Control(pDX, IDC_BTNCLOSE, m_btnClose);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(FileSendDlg, CDialog)
	//{{AFX_MSG_MAP(FileSendDlg)
	ON_BN_CLICKED(IDC_BTNCLOSE, OnBtnclose)
	ON_BN_CLICKED(IDC_BTNCONNECT, OnBtnconnect)
	ON_BN_CLICKED(IDC_BTNLISTEN, OnBtnlisten)
	ON_BN_CLICKED(IDC_BTNSEND, OnBtnsend)
	ON_BN_CLICKED(IDC_BTNSPIDERRECV, OnBtnspiderrecv)
	ON_BN_CLICKED(IDC_BTNJOIN, OnBtnjoin)
	ON_BN_CLICKED(IDC_BTNHELP, OnBtnhelp)
	//}}AFX_MSG_MAP
	ON_MESSAGE(DSPFile::MSG_SENDSECT,OnSendSect)
	ON_MESSAGE(DSPFile::MSG_RECVSECT,OnRecvSect)
	ON_MESSAGE(DSPFile::MSG_SENDCOMPLETE,OnSendComplete)
	ON_MESSAGE(DSPFile::MSG_SETFILENAMESIZE,OnSetFilenameSize)
	ON_MESSAGE(DSPSpider::MSG_GETFILENAME,OnGetFilename)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// FileSendDlg message handlers

BOOL FileSendDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	this->m_btnClose.EnableWindow(FALSE);
	this->m_btnSend.EnableWindow(FALSE);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void FileSendDlg::OnBtnclose() 
{
	// TODO: Add your control notification handler code here
	if(this->m_bRun)
	{
		this->m_bRun	=false;

		//禁止放棄、傳送按鈕
		this->m_btnClose.EnableWindow(FALSE);
		this->m_btnSend.EnableWindow(FALSE);

		//允許連接按鈕、IP選擇和校驗(yàn)選擇
		this->m_btnConnect.EnableWindow();
		this->m_comboIP.EnableWindow();

		if(this->m_btnListen.IsWindowEnabled())
		{
			//如果沒有按下監(jiān)聽按鈕,則允許連接類型選擇
			this->m_checkNet.EnableWindow();
		}

		::closesocket(this->m_sockConnect);
		this->m_sockConnect	=INVALID_SOCKET;
	}
}

void FileSendDlg::OnBtnconnect() 
{
	// TODO: Add your control notification handler code here
	if(this->m_sockConnect!=INVALID_SOCKET)
	{
		::AfxMessageBox("連接已創(chuàng)建,必需先斷開后,才能再次連接。");
		return;
	}

	CString str;
	int	nSel	=this->m_comboIP.GetCurSel();
	if(nSel<0)
	{
		//如果沒有選擇
		this->m_comboIP.GetWindowText(str);
		if(str=="")
		{
			//如果輸入了IP
			::AfxMessageBox("請首先選擇一個(gè)IP");
			return;
		}
	}
	else
	{
		//如果選擇了一個(gè)IP
		this->m_comboIP.GetLBText(nSel,str);
	}
	if(str=="")
	{
		::AfxMessageBox("請首行輸入連接方的IP!");
	}
	else
	{
		//連接指定的IP
		SOCKET sock	=DSP::ConnectTo(str,LISTENPORT,(this->m_checkNet.GetCheck())?false:true);
		if(sock!=INVALID_SOCKET)
		{
			if(nSel<0)
			{
				//如果沒有選擇一個(gè)IP,則將這個(gè)成功的IP加入下拉列表中
				this->m_comboIP.AddString(str);
			}
			
			this->m_bRun		=true;

			this->m_bSendType	=true;

			this->m_sockConnect	=sock;

			//禁止選擇連接類型
			this->m_checkNet.EnableWindow(FALSE);

			//禁止連接按鈕
			this->m_btnConnect.EnableWindow(FALSE);

			//禁止選擇IP
			this->m_comboIP.EnableWindow(FALSE);

			//允許傳送、放棄按鈕
			this->m_btnSend.EnableWindow();
			this->m_btnClose.EnableWindow();
		}
		else
		{
			::AfxMessageBox("連接失敗,請檢查IP后重試!");
		}
	}
}

void FileSendDlg::OnBtnsend() 
{
	// TODO: Add your control notification handler code here
	//禁止傳送按鈕和校驗(yàn)選擇
	::AfxBeginThread(FileSendDlg::SendFileThread,(LPVOID)this);
}

UINT FileSendDlg::SendFileThread(LPVOID lpDlg)
{
	FileSendDlg* pDlg	=(FileSendDlg*)lpDlg;
	
	//是否需要CRC校驗(yàn)
	bool	bCrc		=(pDlg->m_checkCrc.GetCheck())?false:true;

	if(pDlg->m_sockConnect!=INVALID_SOCKET)
	{
		//設(shè)置等待時(shí)間為1分鐘
		DSP::_DSPPACKET packet(pDlg->m_bRun);
		packet.Timeout.tv_sec	=60;
		packet.SetParameter(false,false);
		
		//允許傳送
		pDlg->m_bRun	=true;

		if(pDlg->m_bSendType)
		{
			//設(shè)置希望監(jiān)聽方SOCKET所執(zhí)行的動作
			ListenType	lt;
			lt.m_dwID	=0;
			lt.m_wType	=ListenType::OTHER;

			//傳送ListenType對象
			if(packet.WriteObject(pDlg->m_sockConnect,lt)==false)
			{
				//如果傳送對象失敗,則關(guān)閉連接
				::closesocket(pDlg->m_sockConnect);
				pDlg->m_sockConnect	=INVALID_SOCKET;

				//允許CRC校驗(yàn),禁止斷開按鈕
				pDlg->m_checkCrc.EnableWindow();
				pDlg->m_btnClose.EnableWindow(FALSE);

				//允許選擇連接類型
				pDlg->m_checkNet.EnableWindow();

				//允許連接按鈕
				pDlg->m_btnConnect.EnableWindow();

				pDlg->m_bRun	=false;
			}

			//不需要再傳送類型
			pDlg->m_bSendType	=false;
		}

		if(pDlg->m_bRun)
		{
			//創(chuàng)建一個(gè)對象
			DSPFile	dspFile;
			if(dspFile.ReadySendFile(pDlg->m_bRun,pDlg->m_sockConnect,bCrc,packet,pDlg->m_hWnd))
			{
				//如果傳送成功,則允許傳送按鈕和校驗(yàn)選擇
				pDlg->m_btnSend.EnableWindow();
				pDlg->m_checkCrc.EnableWindow();
			}
		}
	}
	::AfxEndThread(0);
	return 0;
}

void FileSendDlg::OnBtnlisten() 
{
	// TODO: Add your control notification handler code here
	//禁止重新選擇連接類型
	this->m_checkNet.EnableWindow(FALSE);

	//禁止監(jiān)聽按鈕
	this->m_btnListen.EnableWindow(FALSE);

	this->m_phListenThreadParam	=new DSPSpider::_SENDTHREADPARAM();
	this->m_phListenThreadParam->pCWnd		=this;
	this->m_phListenThreadParam->hwnd		=this->m_hWnd;
	this->m_phListenThreadParam->bInternet	=(this->m_checkNet.GetCheck())?false:true;
	this->m_phListenThreadParam->pFunc		=FileSendDlg::ListenProcessFunc;
	::AfxBeginThread(DSPSpider::ListenThread,(LPVOID)this->m_phListenThreadParam);
}


LRESULT FileSendDlg::OnSendComplete(WPARAM wParam, LPARAM lParam)
{
	//允許重新選擇是否校驗(yàn)
	this->m_checkCrc.EnableWindow();

	CString str;
	if(DSPFile::GetCompleteInfo(lParam,str))
	{
		//如果成功
		::AfxMessageBox(str);

		//允許傳送按鈕
		this->m_btnConnect.EnableWindow();
	}
	else
	{
		//如果失敗
		::AfxMessageBox(str);
		this->OnBtnclose();
	}

	return 0;
};

LRESULT FileSendDlg::OnRecvSect(WPARAM wParam, LPARAM lParam)
{
	this->m_progress.StepIt();
	DSPFile::_FILEDETAIL* lphfd	=(DSPFile::_FILEDETAIL*)wParam;
	CString str;
	str.Format("(%dK) %d",lphfd->nCurrLen/1024,lphfd->nCurrLen);
	this->m_strCurrLen.SetWindowText(str);
	return 0;
};

LRESULT FileSendDlg::OnSendSect(WPARAM wParam, LPARAM lParam)
{
	this->m_progress.StepIt();
	DSPFile::_FILEDETAIL* lphfd	=(DSPFile::_FILEDETAIL*)wParam;
	CString str;
	str.Format("(%dK) %d",lphfd->nCurrLen/1024,lphfd->nCurrLen);
	this->m_strCurrLen.SetWindowText(str);
	return 0;
}

LRESULT FileSendDlg::OnSetFilenameSize(WPARAM wParam, LPARAM lParam)
{
	//設(shè)置文件的名字和大小
	DSPFile::_FILEDETAIL* lphfd	=(DSPFile::_FILEDETAIL*)wParam;

	if(lphfd->nCurrLen>0)
	{
		//顯示文件名
		this->m_strFilename.SetWindowText(lphfd->strPathname);

		//顯示總的長度
		CString str;
		str.Format("/ %d (%dK)",lphfd->nFilesize,lphfd->nFilesize/1024);
		this->m_strFilesize.SetWindowText(str);

		//初始化當(dāng)前接收的長度
		this->m_strCurrLen.SetWindowText("0K");

		//初始化進(jìn)度顯示
		this->m_progress.SetRange32(0,lphfd->nFilesize);
		this->m_progress.SetStep(lphfd->nCurrLen);
		this->m_progress.SetPos(0);

		//禁止傳送按鈕和校驗(yàn)選擇
		this->m_btnSend.EnableWindow(FALSE);
		this->m_checkCrc.EnableWindow(FALSE);
	}
	else
	{
		//顯示文件名
		this->m_strFilename.SetWindowText(lphfd->strPathname);
	}
	return 0;
}

LRESULT FileSendDlg::OnGetFilename(WPARAM wParam, LPARAM lParam)
{
	//打開對話框,選擇需要被傳送的文件名

	DSPSpider::_FILEDETAIL& fd	=*(DSPSpider::_FILEDETAIL*)wParam;
	CFileDialog fileDialog(TRUE,NULL,fd.strFilename,OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_FILEMUSTEXIST);
	if(fileDialog.DoModal()==IDOK)
	{
		//得到被選擇的文件名
		CString str		=fileDialog.GetPathName();
		DSPSpider::SetFilename(wParam,str);
		fd.dwFilesize	=DSP::GetFileSize(fd.strPathname);
	}
	return 0;
};

void FileSendDlg::OnBtnspiderrecv() 
{
	// TODO: Add your control notification handler code here
	POINT point;
	CWnd* pWnd;
	int	row		=15;
	int delta	=SpiderWnd::WND_HEIGHT+5;
	point.x		=850;
	for(;row<500;row+=delta)
	{
		point.y	=row;
		pWnd	=CWnd::WindowFromPoint(point);
		if(pWnd!=NULL)
		{
			if(pWnd->GetParent()==this)
				continue;
		}

		//如果找到了一個(gè)空的位置
		SpiderWnd*	bs	=new SpiderWnd;
		SpiderWnd::pLastWnd	=bs;

		bs->Create(800,row,170,this);
		bs->ShowWindow(SW_SHOW);
		bs->m_spider.m_bInternet	=(this->m_checkNet.GetCheck())?false:true;

		//打開對話框,選擇需要下載的文件名
		CFileDialog fileDialog(FALSE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST);
		if(fileDialog.DoModal()==IDOK)
		{
			//得到被選擇的文件名
			bs->m_spider.RunSpider(fileDialog.GetFileName(),fileDialog.GetPathName(),bs->m_hWnd,3);
		}
		break;
	}
}


bool FileSendDlg::ListenProcessFunc(DSPSpider::_SENDTHREADPARAM *phParam,DSP::_DSPPACKET& packet)
{
	FileSendDlg* pDlg	=(FileSendDlg*)phParam->pCWnd;
	
	//準(zhǔn)備接收文件
	//允許斷開按鈕
	pDlg->m_btnClose.EnableWindow();

	//禁止連接按鈕
	pDlg->m_btnConnect.EnableWindow(FALSE);

	//保存連接的SOCKET
	pDlg->m_sockConnect	=phParam->sock;

	DSPFile	dspFile;
	dspFile.ReadyRecvFile(pDlg->m_bRun,phParam->sock,packet,pDlg->m_hWnd);
	return true;
};

void FileSendDlg::OnBtnjoin() 
{
	// TODO: Add your control notification handler code here
	if(SpiderWnd::pLastWnd!=NULL)
	{
		CString str;
		this->m_comboIP.GetWindowText(str);
		if(str=="")
		{
			::AfxMessageBox("請首先選擇一個(gè)IP或者輸入一個(gè)新的IP,然后再點(diǎn)擊加入按鈕。");
			return;
		}
		SpiderWnd::pLastWnd->m_spider.AddIP(str,34567);
	}
}

void FileSendDlg::OnBtnhelp() 
{
	// TODO: Add your control notification handler code here
	CString str;
	str.Format("在點(diǎn)擊[多線程接收]接鈕后,必需要選擇或輸入一個(gè)IP,然后點(diǎn)擊[加入多線程IP]按鈕,加入一個(gè)IP,程序會自動與新加入的IP建立連接,并開始下載。\r\n傳送方將根據(jù)接收方傳送的文件名,選擇一個(gè)文件準(zhǔn)備傳送。\r\n可以選擇多個(gè)IP加入,但是當(dāng)IP超過設(shè)置的線程個(gè)數(shù)時(shí),則將不起作用。");
	::AfxMessageBox(str);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文在线免费一区三区高中清不卡| 午夜视频在线观看一区二区| 成人免费在线视频| 中文字幕在线一区免费| 亚洲一区二区在线视频| 五月天一区二区三区| 精品伊人久久久久7777人| 风间由美中文字幕在线看视频国产欧美| av高清久久久| 日韩女优制服丝袜电影| 国产精品久久久久桃色tv| 亚洲国产一区二区三区青草影视| 看电视剧不卡顿的网站| 91在线观看成人| 2欧美一区二区三区在线观看视频| 亚洲色图欧美在线| 国产一区免费电影| 欧美日韩一级视频| 国产精品久久久久影院| 久久精品999| 欧美美女喷水视频| 亚洲美女精品一区| 丁香六月久久综合狠狠色| 7777精品伊人久久久大香线蕉的 | 这里只有精品免费| 亚洲激情av在线| 成人性生交大片免费看中文 | 91丝袜美女网| 欧美国产成人精品| 国产精品亚洲成人| 日韩精品一区二区三区老鸭窝| 亚洲色欲色欲www在线观看| 国产一区二区三区黄视频| 欧美精品久久久久久久久老牛影院| 亚洲蜜桃精久久久久久久| 97久久精品人人澡人人爽| 中文字幕欧美日本乱码一线二线| 久久se这里有精品| 精品国产污网站| 久久99精品久久久久久国产越南 | 国产suv一区二区三区88区| 精品国产一区二区三区不卡 | 国产精品乱人伦中文| 成人午夜视频网站| 99久久亚洲一区二区三区青草| 欧美日韩一级黄| 成人avav在线| 另类小说图片综合网| 国产精品久久99| 欧美一二区视频| 精品综合免费视频观看| 欧美一级精品大片| 精品在线播放午夜| 久久久久久亚洲综合影院红桃| 国产一区三区三区| 日本一区二区三区四区在线视频| 国产在线视频精品一区| 精品国产一区二区精华| 麻豆一区二区在线| 精品欧美久久久| 国产一区二区三区综合| 91精品在线一区二区| 日本成人中文字幕| 欧美tickling网站挠脚心| 久久国产精品一区二区| 日韩精品一区二区三区视频播放| 日本系列欧美系列| 日韩免费观看2025年上映的电影 | 日本韩国精品在线| 亚洲大片免费看| 国产欧美精品一区| 欧美日韩在线播放一区| 国产综合久久久久影院| 中文字幕va一区二区三区| 欧美日韩高清在线| 国产麻豆精品在线观看| 一二三区精品福利视频| 久久久精品影视| 欧美日韩综合色| 99天天综合性| 黄色成人免费在线| 免费人成在线不卡| 日韩**一区毛片| 亚洲精选一二三| 国产亚洲一本大道中文在线| 欧美日韩国产不卡| 色婷婷综合久久久中文一区二区| 国产精品主播直播| 国产高清精品网站| 欧美放荡的少妇| 欧美日韩中字一区| 久久蜜臀中文字幕| 国产精品护士白丝一区av| 一区二区三区免费网站| 亚洲成人动漫av| 久久www免费人成看片高清| 免费日本视频一区| 国产精品一级片在线观看| 韩国欧美国产1区| 经典三级在线一区| 国产精品一区二区三区乱码| 国产麻豆成人精品| 国产东北露脸精品视频| 成人看片黄a免费看在线| 成人国产精品免费| 一本大道久久精品懂色aⅴ| 高清不卡在线观看| 一本到不卡免费一区二区| 欧美无人高清视频在线观看| 欧美日韩国产成人在线免费| 制服丝袜中文字幕一区| 久久五月婷婷丁香社区| 国产精品免费人成网站| 中文字幕欧美日韩一区| 三级欧美韩日大片在线看| 男女男精品网站| 95精品视频在线| 7777精品久久久大香线蕉| 欧美日韩国产bt| 精品奇米国产一区二区三区| 精品久久久久久久一区二区蜜臀| 一区二区欧美国产| 久久97超碰国产精品超碰| 91欧美一区二区| 精品国精品国产| 亚洲乱码日产精品bd| 精品一区二区精品| 成人爽a毛片一区二区免费| 日韩欧美国产综合在线一区二区三区| 久久先锋影音av鲁色资源网| 一个色综合av| 国产91综合一区在线观看| 欧美人体做爰大胆视频| 国产亲近乱来精品视频| 同产精品九九九| 色八戒一区二区三区| 欧美精彩视频一区二区三区| 日韩精品电影一区亚洲| 色哟哟一区二区| 欧美激情一区二区三区在线| 青青草精品视频| 欧美日韩在线一区二区| 国产精品久久国产精麻豆99网站 | 亚洲视频在线一区观看| 久久99在线观看| 日韩一区二区三区视频| 婷婷综合久久一区二区三区| 欧美日韩一区二区在线观看| 亚洲在线观看免费视频| 欧美三级视频在线| 日本美女一区二区三区视频| 日韩午夜激情视频| av高清久久久| 石原莉奈在线亚洲三区| 欧美va在线播放| eeuss鲁片一区二区三区| 五月天一区二区三区| 国产日韩欧美亚洲| 成人精品鲁一区一区二区| 日韩欧美在线综合网| 精品一区二区在线免费观看| 欧美日韩午夜在线视频| 日韩高清一级片| 在线播放一区二区三区| 亚洲国产日韩一级| 欧美精品v国产精品v日韩精品 | 国产精品超碰97尤物18| 成人综合激情网| 亚洲你懂的在线视频| 欧美视频在线观看一区| 免费久久精品视频| 中文字幕中文字幕在线一区 | 久久se这里有精品| 日韩美女视频一区| 在线91免费看| 国产在线麻豆精品观看| 国产精品亲子伦对白| 欧美亚洲一区二区在线观看| 日本sm残虐另类| 亚洲免费观看高清完整版在线观看熊| 91久久线看在观草草青青| 丝袜诱惑制服诱惑色一区在线观看| 久久久www免费人成精品| 99精品偷自拍| 日日骚欧美日韩| 国产精品女主播在线观看| 日韩一区二区三区视频| k8久久久一区二区三区| 午夜一区二区三区视频| 亚洲国产精品黑人久久久| 欧美日韩国产高清一区二区三区| 国产一区二区不卡| 免费观看久久久4p| 亚洲欧美国产77777| 精品福利在线导航| 在线91免费看| 欧美在线看片a免费观看| 人人狠狠综合久久亚洲| 亚洲已满18点击进入久久| 中文字幕一区二区三区视频|