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

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

?? excute.cpp

?? tftp功能服務器及客戶端的實現
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// excute.cpp: implementation of the Cexcute class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "TftpSrv.h"
#include "excute.h"
#include <stdio.h>
#include <string.h>

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Cexcute::Cexcute(u_short pcode,char *fileandmode,SOCKADDR_IN RcvAddr,HWND hwnd)
{	
	this->pcode=pcode;
	this->fileandmode=fileandmode;
	this->RcvAddr=RcvAddr; 
	this->tftpHwnd = hwnd;
	this->PortCount = (u_short)6006;
	this->TotalTime = 0;
	this->RcvPort = htons(RcvAddr.sin_port);
	len = sizeof(SOCKADDR);
	TVal.tv_sec = 5;
	TVal.tv_usec =0;
	Init();

	char *szLogPath = "D:\\TftpSrvLog";
	CreateDirectory(szLogPath,NULL); 
	 
	//list[200] 設置 LOg 文件路徑,log文件名由客戶端主機ip及請求文件和請求方式組成
	char list[200];
	if(pcode == RRQ)
		sprintf(list,"D:\\TftpSrvLog\\%s.RRQ %s.log",inet_ntoa(RcvAddr.sin_addr),fileandmode);
	else if(pcode == WRQ)
		sprintf(list,"D:\\TftpSrvLog\\%s.WRQ %s.log",inet_ntoa(RcvAddr.sin_addr),fileandmode);
	//打開創建 Log 文件
	if(pcode == RRQ || pcode == WRQ)
		stream = fopen(list,"a+");
	
	if(stream == NULL)
	{
		AfxMessageBox("初始化log文件失敗");
		fclose( stream );
	}	
	//寫 log 頭部
	if(pcode == RRQ)
	{
		sprintf(list,"-------------------------RRQ %s--------------------------\n",fileandmode);
		fwrite(list,1,strlen(list),stream);
	}
	else if(pcode == WRQ)
		{
		sprintf(list,"-------------------------WRQ %s---------------------------\n",fileandmode);
		fwrite(list,1,strlen(list),stream);
	}
	SendMessage();			
}

Cexcute::~Cexcute()
{
	
}
//Init 新創建進程套接字初始化
BOOL Cexcute::Init()
{
	
	 SrvSocket = socket(AF_INET,SOCK_DGRAM,0);
	 if(SrvSocket == INVALID_SOCKET)
	 {
		AfxMessageBox("socket erro");
		return FALSE;
	 }
	 
	 SrvAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
	 SrvAddr.sin_family = AF_INET;
	 SrvAddr.sin_port = htons(PortCount++);
	 
	if(INVALID_SOCKET ==(bind(SrvSocket,(SOCKADDR*)&SrvAddr,sizeof(SrvAddr))))
	{
		return Init();
	}

	return TRUE;
}

//SendMessage 收發文件函數
void Cexcute::SendMessage()
{
	StartTime = GetCurrentTime(); 
	TotalTime = StartTime.GetHour();
	timeFormat = StartTime.Format("%H:%M:%S");
	size_t nBytesRcv = 0;
	size_t TotalBytes = 0;
	u_short		 b = 0;
	int timeout    = 0;
	int Repeat = 0;
	int OpcodeErr  = 1;

	switch(pcode) 
	{
	//========================下載文件請求 RRQ==================	
	case RRQ :
		
		sprintf(strDisplay,"%s : [%s%d] 請求下載文件 %s,連接成功!\n",
			timeFormat,inet_ntoa(RcvAddr.sin_addr),RcvPort,fileandmode);
		::SendMessage(tftpHwnd,WM_DATADISPLAY,0,(LPARAM)strDisplay);
		fwrite(strDisplay,1,strlen(strDisplay),stream);

		DBuf.pcode = htons(DAT);
			
		if((pFile = fopen(fileandmode,"r"))==NULL)
		{	//請求文件不存在,中止服務
			SendErrors(1);
			
			timeNow=CTime::GetCurrentTime(); 
			timeFormat=timeNow.Format("%H:%M:%S");
			sprintf(strDisplay,"%s : [RRQ %s] 服務器找不到請求文件,停止!\n",
					timeFormat,fileandmode);
			::SendMessage(tftpHwnd,WM_DATADISPLAY,0,(LPARAM)strDisplay);
			fwrite(strDisplay,1,strlen(strDisplay),stream);
			fclose(stream);
			return ;
		}	
		fclose(pFile);
		
		CFile *pCFile;
		pCFile=new CFile((LPCTSTR)fileandmode, CFile::modeRead);
	
		size_t nBytesRead;
		size_t SendBuf;
		while(1)//發送數據
		{
			
			memset(DBuf.buf,0,512);
			//讀文件數據,默認二進制格式
			nBytesRead = pCFile->Read(DBuf.buf, 512);
			TotalBytes += nBytesRead;
		
			DBuf.block = htons(++b); //設置網絡字節序的數據包序列號

			fd_set SockSet;
			
			SendBuf = nBytesRead + 4;//發送數據的總長度,由4字節的block
									//和opcode和實際的數據組成
			timeNow=CTime::GetCurrentTime(); 
			timeFormat=timeNow.Format("%H:%M:%S");
			sprintf(strDisplay,"%s : 給   [%s:%d] 發送第 %d 號 DATA  %d Bytes\n",
					timeFormat,inet_ntoa(RcvAddr.sin_addr),RcvPort,b,nBytesRead);
			
			::SendMessage(tftpHwnd,WM_DATADISPLAY,0,(LPARAM)strDisplay);
			fwrite(strDisplay,1,strlen(strDisplay),stream);

			while(1)//超時循環 
			{	
				sendto(SrvSocket,(char*)&DBuf,SendBuf,0,
					(SOCKADDR*)&RcvAddr,len);
				
				FD_ZERO(&SockSet);
				FD_SET(SrvSocket,&SockSet);
				if(select(SrvSocket,&SockSet,NULL,NULL,&TVal))
				{	//select 函數限制套接字的 recvfrom 阻塞時間,此處為 5 s				
					recvfrom(SrvSocket,(char*)&ABuf,sizeof(AckBuf),
						0,(SOCKADDR*)&RcvAddr,&len);
					
					if(ntohs(ABuf.pcode) != ACK || ntohs(ABuf.block) != b)
					{
						//收到不正確包的處理:重發報文再次接受
						Repeat++;
						timeNow=CTime::GetCurrentTime(); 
						timeFormat=timeNow.Format("%H:%M:%S");

						if(Repeat == 5)
						{	//重復收取不正確包 5 次,則中止服務
							timeNow=CTime::GetCurrentTime(); 
							timeFormat=timeNow.Format("%H:%M:%S");
							sprintf(strDisplay,"%s : 給   [%s:%d] 重發第 %d 號 DATA  第 %d 次,中止服務.\n",
							timeFormat, inet_ntoa(RcvAddr.sin_addr),RcvPort,b,Repeat);
							::SendMessage(tftpHwnd,WM_DATADISPLAY,0,(LPARAM)strDisplay);
							fwrite(strDisplay,1,strlen(strDisplay),stream);

							Repeat = 0;
							delete pCFile;
							return;
						}

						sprintf(strDisplay,"%s : 給   [%s:%d] 重發第 %d 號 DATA  第 %d 次\n",
							timeFormat, inet_ntoa(RcvAddr.sin_addr),RcvPort,b,Repeat);
						::SendMessage(tftpHwnd,WM_DATADISPLAY,0,(LPARAM)strDisplay);
						fwrite(strDisplay,1,strlen(strDisplay),stream);
						
						continue;
					}
					else {
						//收到正確的 ACK 處理
						timeNow=CTime::GetCurrentTime(); 
						timeFormat=timeNow.Format("%H:%M:%S");
						sprintf(strDisplay,"%s : 收到 [%s:%d] 第     %d 號 ACK.\n",
							timeFormat,inet_ntoa(RcvAddr.sin_addr),RcvPort,b);
						::SendMessage(tftpHwnd,WM_DATADISPLAY,0,(LPARAM)strDisplay);
						fwrite(strDisplay,1,strlen(strDisplay),stream);

						if(nBytesRead<512)
						{	
							//發送的數據包為最后一個,傳送完成處理
							timeNow=CTime::GetCurrentTime(); 

							pCFile->Close();

							TotalTime -= timeNow.GetHour();
							if(TotalTime <= 0)
								TotalTime = TotalTime * 60;//傳文件時間不得超過24小時,否則檢查不出正確耗時
							else
								TotalTime = 24 * 60;
							TotalTime += timeNow.GetMinute() - StartTime.GetMinute();
							TotalTime = TotalTime * 60;

							TotalTime += timeNow.GetSecond() - StartTime.GetSecond();

							if(TotalTime == 0)
								TotalTime = 1;
							
							sprintf(strDisplay,"發送%s完成[%s:%d]: %ld Bytes,時間: %d s, %d Bytes/s\n",fileandmode,
								inet_ntoa(RcvAddr.sin_addr),RcvPort,TotalBytes,TotalTime,u_int(TotalBytes/TotalTime));
							::SendMessage(tftpHwnd,WM_DATADISPLAY,0,(LPARAM)strDisplay);
							fwrite(strDisplay,1,strlen(strDisplay),stream);
							delete pCFile;
							fclose(stream);
							return;
						}
						break;
					}
				}
				else//if select
				{
					//select 超時處理
					if(5 == timeout) 
					{
						//連續超時 5 次,中止服務
						timeNow=CTime::GetCurrentTime(); 
						sprintf(strDisplay,"%s : 等待 [%s:%d] 第    %d 號 ACK 第 %d 次超時,中止服務!\n",
							timeFormat, inet_ntoa(RcvAddr.sin_addr),RcvPort,b,timeout);
						::SendMessage(tftpHwnd,WM_DATADISPLAY,0,(LPARAM)strDisplay);
						fwrite(strDisplay,1,strlen(strDisplay),stream);
						timeout = 0;
						delete pCFile;
						return;
					}
					timeNow=CTime::GetCurrentTime(); 
					sprintf(strDisplay,"%s : 等待 [%s:%d] 第    %d 號 ACK 第 %d 次超時!\n",
							timeFormat, inet_ntoa(RcvAddr.sin_addr),RcvPort,b,++timeout);
					::SendMessage(tftpHwnd,WM_DATADISPLAY,0,(LPARAM)strDisplay);
					fwrite(strDisplay,1,strlen(strDisplay),stream);
					memset((void*)&ABuf,0,sizeof(ABuf));
				}
			}//if select	
		}//while(1)
		break;

		//============================上傳文件請求 WRQ==================
	case WRQ :

		//提示連接成功
		sprintf(strDisplay,"%s [%s:%d]請求上載文件 %s,連接成功!\n",

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片在线观看无码| 99riav一区二区三区| 国产日韩精品一区二区三区| 色噜噜夜夜夜综合网| 久久99久久精品| 一二三四社区欧美黄| 国产女主播视频一区二区| 欧美绝品在线观看成人午夜影视| 粉嫩13p一区二区三区| 蜜臀av一区二区| 亚洲综合成人在线| 日韩久久一区二区| 国产欧美一区二区在线| 欧美大片在线观看| 欧美日韩国产免费| 日本道免费精品一区二区三区| 国产精品一区二区果冻传媒| 蜜芽一区二区三区| 五月激情六月综合| 亚洲国产aⅴ成人精品无吗| 亚洲素人一区二区| 最近日韩中文字幕| 国产精品麻豆视频| 国产精品美女久久久久久久网站| 久久综合久久综合久久| 精品国产一区二区亚洲人成毛片| 911精品国产一区二区在线| 91福利在线播放| 日本福利一区二区| 日本丰满少妇一区二区三区| 91浏览器在线视频| 91在线免费视频观看| 99视频超级精品| 成a人片国产精品| 99热在这里有精品免费| 9人人澡人人爽人人精品| 99精品欧美一区二区三区小说| 成人app下载| 91在线视频免费观看| 色琪琪一区二区三区亚洲区| 91久久人澡人人添人人爽欧美| 95精品视频在线| 欧美亚洲综合网| 欧美老年两性高潮| 日韩一区二区在线看| 欧美第一区第二区| 国产欧美精品国产国产专区| 国产精品美女一区二区三区 | 久久久av毛片精品| 久久久久亚洲蜜桃| 国产精品国产三级国产有无不卡| 一区视频在线播放| 一区二区三区欧美在线观看| 亚洲成人动漫在线免费观看| 日本女优在线视频一区二区| 韩国在线一区二区| 成人av网站免费| 欧美色手机在线观看| 欧美一区二区三区在| 26uuu国产电影一区二区| 国产精品色呦呦| 亚洲国产人成综合网站| 麻豆精品一区二区三区| 国产传媒久久文化传媒| 91啪九色porn原创视频在线观看| 欧美色老头old∨ideo| 精品少妇一区二区| 中文字幕视频一区| 日韩精品一二三四| 国产精品亚洲一区二区三区在线| 97精品国产露脸对白| 在线综合+亚洲+欧美中文字幕| 久久蜜桃av一区二区天堂 | 欧美女孩性生活视频| 欧美不卡一二三| 亚洲人成网站精品片在线观看| 午夜免费久久看| 风间由美性色一区二区三区| 欧美视频日韩视频在线观看| wwwwxxxxx欧美| 亚洲视频1区2区| 久国产精品韩国三级视频| 91在线视频播放| 精品精品欲导航| 亚洲精品国产一区二区精华液 | 亚洲精品欧美二区三区中文字幕| 日本不卡在线视频| www.色精品| 日韩手机在线导航| 17c精品麻豆一区二区免费| 免费观看91视频大全| 色悠久久久久综合欧美99| 日韩欧美国产综合| 亚洲国产一区在线观看| 丁香网亚洲国际| 欧美xingq一区二区| 亚洲国产精品麻豆| 99久久亚洲一区二区三区青草| 欧美zozo另类异族| 午夜激情综合网| 91麻豆国产在线观看| 国产欧美一区二区三区网站| 日韩av中文在线观看| 91国产免费观看| 国产精品欧美极品| 国产精品一区二区在线观看不卡| 欧美福利一区二区| 亚洲一区在线观看网站| 成人av午夜影院| 国产日韩欧美精品在线| 久久丁香综合五月国产三级网站| 欧美性猛交xxxx乱大交退制版 | 欧美日高清视频| 综合中文字幕亚洲| 成人国产视频在线观看| 久久综合国产精品| 麻豆精品在线看| 884aa四虎影成人精品一区| 一区二区三区av电影| 97久久人人超碰| 国产精品国产馆在线真实露脸| 国产成人精品免费| 久久九九全国免费| 国产在线精品免费| 欧美成人三级电影在线| 免费在线欧美视频| 91精品久久久久久久99蜜桃 | 免费xxxx性欧美18vr| 7777精品伊人久久久大香线蕉超级流畅 | 色av成人天堂桃色av| 国产精品国产精品国产专区不蜜| 国产精品456| 国产三级欧美三级| 国产成人欧美日韩在线电影| 国产亚洲一二三区| 岛国精品在线播放| 国产精品女人毛片| 99re热这里只有精品视频| 亚洲欧美激情在线| 91成人免费网站| 午夜一区二区三区在线观看| 欧美日韩一本到| 蜜臀a∨国产成人精品| 精品国产欧美一区二区| 国产a精品视频| 亚洲欧美中日韩| 在线免费亚洲电影| 午夜一区二区三区视频| 欧美一区二区三区免费大片| 青娱乐精品视频| 国产日韩精品一区二区三区| av中文字幕亚洲| 亚洲一卡二卡三卡四卡| 欧美一级二级三级乱码| 韩国三级电影一区二区| 国产精品二区一区二区aⅴ污介绍| 91一区一区三区| 午夜精品久久久久久久99水蜜桃| 91精品国产综合久久久久久漫画 | 日韩一区精品视频| 26uuu欧美| 色94色欧美sute亚洲线路二| 秋霞午夜av一区二区三区| 久久精品欧美一区二区三区麻豆| 丁香一区二区三区| 亚洲成人在线免费| 2019国产精品| 在线免费不卡电影| 美女视频免费一区| 亚洲欧洲国产专区| 日韩一级片网址| 99国产欧美久久久精品| 亚洲成av人片| 国产亚洲美州欧州综合国| 欧美午夜免费电影| 国产美女久久久久| 亚洲电影中文字幕在线观看| 精品乱人伦一区二区三区| 一本色道a无线码一区v| 黄色日韩三级电影| 亚洲小说欧美激情另类| 精品国产乱码久久久久久牛牛| www.在线欧美| 久久国产日韩欧美精品| 亚洲午夜日本在线观看| 国产亚洲精品中文字幕| 91麻豆精品国产91久久久更新时间 | 国产精品拍天天在线| 欧美绝品在线观看成人午夜影视| 国产精品911| 日韩在线一区二区| 日韩伦理免费电影| 国产无人区一区二区三区| 欧美理论片在线| 色综合天天性综合| 风流少妇一区二区| 久久成人免费网站| 香港成人在线视频| 亚洲最新视频在线观看| 国产日韩欧美激情|