WEB开发网
开发学院软件开发C++ 文件上传下载 阅读

文件上传下载

 2012-05-16 10:16:07 来源:WEB开发网   
核心提示:MFC实现 C/S模式 文件传输用的UDP传输,对文件UDP做了一点点安全校验 这是刚进公司培训的作业,文件上传下载, 一周完成, 所以很粗糙DWORD CUDPServerSock::DownLoad(){char szIP[20];char szSend[SEND_MAX_SIZE+1] = {0};szSend[

MFC实现 
C/S模式 
文件传输用的UDP传输,对文件UDP做了一点点安全校验 
这是刚进公司培训的作业, 一周完成, 所以很粗糙

DWORD CUDPServerSock::DownLoad()
{
	char szIP[20];
	char szSend[SEND_MAX_SIZE+1] = {0};
	szSend[0] = S_DOWNLOAD_FILE_UDP;
	char *p = szSend;
	strcpy(szIP, m_szSendIP);
	if (!m_downFIsOpen)
	{
		m_downFIsOpen = TRUE;
		int err = m_downFile.Open(m_szDownRoute, CFile::modeRead);
		if(0 == err)
		{
			szSend[1] = (char)127;            //127作为错误验证
			p = p + 2;
			strcpy(p, "=t=DONE=w=");
			SendTo(szSend, strlen(szSend)+1, szIP);
			return 1;
		}
	}
	int nRet = 0;
	szSend[1] = 1;    //从1开始
	p = szSend + 2;
	nRet = m_downFile.Read(p, SEND_MAX_SIZE-1);
	memcpy(m_szLastBuf, szSend, SEND_MAX_SIZE+1);  //保存这次发送的数据,错误的话重发;
	SendTo(szSend, nRet+2, szIP);
	return 0;
}

void CUDPServerSock::ContimueDownLoad(LPCSTR szRecv, LPCSTR szIP)
{
	static char num = 1;
	char szSend[SEND_MAX_SIZE+1] = {0};
	szSend[0] = S_DOWNLOAD_FILE_UDP;
	char *p = szSend + 2;
	if (!m_downFIsOpen)
		return;
	char k = szRecv[0];
	if (127 == k)
	{
		num = 1;
		m_downFIsOpen = FALSE;
		m_downFile.Close();
		return;
	}
	if (num == 126)
		num = 0;
	if (k == num+1)
	{
		num ++;
		szSend[1] = num;
		int nRet = m_downFile.Read(p, SEND_MAX_SIZE-1);
		memcpy(m_szLastBuf, szSend, SEND_MAX_SIZE+1);  //保存这次发送的数据,错误的话重发;
		SendTo(szSend, nRet+2, szIP);
	}
	else
		SendTo(m_szLastBuf, strlen(m_szLastBuf)+1, szIP);
}

Tags:文件 上传下载

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接