文件上传下载
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); }
更多精彩
赞助商链接