资源简介
一个用MFC开发的FTP客户端,特点是支持多线程下载和断点续传,没有用CSocket,用了比较底层的Socket函数,适合学习Socket的朋友,请多多支持
代码片段和文件信息
// client.cpp : Defines the class behaviors for the application.
//
#include “stdafx.h“
#include “client.h“
#include “afxsock.h“
#include “MainFrm.h“
#include “clientDoc.h“
#include “clientView.h“
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CClientApp
BEGIN_MESSAGE_MAP(CClientApp CWinApp)
//{{AFX_MSG_MAP(CClientApp)
ON_COMMAND(ID_APP_ABOUT OnAppAbout)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CClientApp construction
CClientApp::CClientApp()
{
// TODO: add construction code here
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CClientApp object
CClientApp theApp;
//完成进线
DWORD WINAPI notify(LPVOID lpparam)
{
CMainframe* pthis=(CMainframe*)lpparam;
return pthis->Finish();
}
DWORD WINAPI timethread(LPVOID lpparam)
{
//记录进程
CDownLoad * pthis=(CDownLoad *)lpparam;
return pthis->Finish();
}
int Rev(SOCKET sockchar *dataint len)
{
//取数据
int iLenGettedret;
iLenGetted=len;
while(iLenGetted>0)
{
ret=recv(sockdataiLenGetted0);
if(ret<0)
{
CString str;
str=“接收错误\n“;
AfxGetMainWnd()->SendMessageToDescendants(WM_MESSAGE (WPARAM)str.GetBuffer(0)(LPARAM)RGB(25500)1);
str.ReleaseBuffer();
return -2;
}
if(ret==0)
return len-iLenGetted;
data+=ret;
iLenGetted-=ret;
}
return len;
}
int Send(SOCKET sockchar *dataint len)
{
//发送信息
int iLenSendedret;
iLenSended=len;
while(iLenSended>0)
{
ret=send(sockdataiLenSended0);
if(ret<0)
{
CString str;
str=“发送错误\n“;
AfxGetMainWnd()->SendMessageToDescendants(WM_MESSAGE (WPARAM)str.GetBuffer(0)(LPARAM)RGB(25500)1);
str.ReleaseBuffer();
return -2;
}
if(ret==0)
return len-iLenSended;
data+=ret;
iLenSended-=ret;
}
return len;
}
//下载进程
DWORD WINAPI DownLoadThread(LPVOID lpparam)
{
CDownLoad * pthis=(CDownLoad*)lpparam;
InterlockedIncrement(&pthis->m_index);
pthis->DownThread(pthis->m_index-1);
return 1;
}
CString g_IP;
int fileflags[10];
FILEINFO files[10];
/////////////////////////////////////////////////////////////////////////////
// CClientApp initialization
BOOL CClientApp::InitInstance()
{
if (!AfxSocketInit()) //重要
{
AfxMessageBox(IDP_SOC
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 49280 2010-12-23 14:07 client\client.aps
文件 4015 2011-02-28 21:39 client\client.clw
文件 6295 2010-12-23 13:31 client\client.cpp
文件 5140 2010-12-23 14:47 client\client.dsp
文件 520 2010-12-22 23:00 client\client.dsw
文件 1591 2010-12-23 13:04 client\client.h
文件 82944 2011-02-28 21:39 client\client.ncb
文件 50688 2011-02-28 21:39 client\client.opt
文件 246 2010-12-29 22:11 client\client.plg
文件 16019 2010-12-23 14:07 client\client.rc
文件 2468 2010-12-22 23:00 client\clientDoc.cpp
文件 1547 2010-12-22 23:00 client\clientDoc.h
文件 4798 2010-12-24 13:18 client\clientView.cpp
文件 2002 2010-12-22 23:41 client\clientView.h
文件 1111 2010-12-22 23:00 client\CntrItem.cpp
文件 1554 2010-12-22 23:00 client\CntrItem.h
文件 5907456 2010-12-23 01:40 client\Debug\client.bsc
文件 2408500 2010-12-24 14:29 client\Debug\client.exe
文件 2817864 2010-12-24 14:29 client\Debug\client.ilk
文件 30976 2010-12-23 13:31 client\Debug\client.obj
文件 6130884 2010-12-23 01:45 client\Debug\client.pch
文件 4531200 2010-12-24 14:29 client\Debug\client.pdb
文件 22664 2010-12-23 14:07 client\Debug\client.res
文件 0 2010-12-23 01:40 client\Debug\client.sbr
文件 19869 2010-12-23 13:04 client\Debug\clientDoc.obj
文件 0 2010-12-23 00:26 client\Debug\clientDoc.sbr
文件 32915 2010-12-24 13:18 client\Debug\clientView.obj
文件 0 2010-12-23 01:03 client\Debug\clientView.sbr
文件 15743 2010-12-23 13:04 client\Debug\CntrItem.obj
文件 0 2010-12-23 00:26 client\Debug\CntrItem.sbr
............此处省略35个文件信息
相关资源
- OPC客户端应用程序的C++实现
- Win32多线程程序设计 pdf高清
- 用VC++写的小型FTP服务器源代码
- 医务室模拟_vc/类/多线程
- c语言实现ftp文件传输
- OpenSSL客户端服务器源码
- C++FTP服务端客户端
- C++并发编程实战(中文版)
- VC H264格式视屏播放器源码
- VC++ 6.0 TCP 通讯(服务器端和客户端)
- 基于MFC的ftp客户端80563
- Socket文件传输
- c++FTP上传程序源代码
- telnet客户端
- MFC多线程编程----多线程画线源码
- MFC创建多线程工作者线程demo
- c++ mfc客户端服务器端文件传输
- 基于MFC对话框的UDP客户端服务器端程
- FTP服务器MFC源码
- MFC多线程 多事件
- C++实现线程池源文件
- 基于对话框的多线程进度条更新
- 局域网监控系统vc
- 基于UDP协议的简单聊天系统设计与实
- FTP多线程服务器源码
- C++发送邮件客户端源码
- C/S架构的C++实现
- 一个很好用的串口调试助手及源码
- C++ 多线程通信方式简介并结合生产者
- TFTP服务器端
评论
共有 条评论