有时我们需要在局域网中下载文件,win下可以通过共享文件夹来传输文件,而在局域网内使用系统自带API来下载文件速度比自己搭建服务器快。
首先,我们要共享一个文件,WIN下首先要共享文件夹并设置无密码。
直接贴代码:
// ClinDataSer.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <WinNetWk.h>
#include <WinBase.h>
#pragma comment(lib, "mpr.lib")
#define coutl(XXX) cout<<XXX<<endl; //输出换行
int _tmain(int argc, _TCHAR* argv[])
{
//dcmtk (file://ANNET-SKY-PC/dcmtk)
string strIp = "\\\\127.0.0.1";
NETRESOURCE nr;
memset(&nr, 0, sizeof(NETRESOURCE));
nr.dwType = RESOURCETYPE_DISK;
nr.lpLocalName = NULL;
nr.lpRemoteName = (LPTSTR)(LPCTSTR)strIp.c_str();
nr.lpProvider = NULL;
string strError;
if(WNetAddConnection2(&nr, "", "Annet-Sky", CONNECT_UPDATE_PROFILE) != NO_ERROR )
{
DWORD dwErrCode = GetLastError();
switch(dwErrCode)
{
case ERROR_BAD_NETPATH:
strError = "网络地址不存在或禁止匿名访问";
break;
case ERROR_SESSION_CREDENTIAL_CONFLICT:
{
strError = "用户名密码错误或用户集冲突" + strIp;
//先删除,再重新连接
if(NO_ERROR == WNetCancelConnection2((LPTSTR)(LPCTSTR)strIp.c_str(), CONNECT_UPDATE_PROFILE, TRUE))
{
coutl("删除成功!");
}
}
break;
case ERROR_ACCESS_DENIED:
strError = "访问被禁止";
break;
case ERROR_LOGON_FAILURE:
strError = "用户名或者密码错误";
break;
default:
strError = "连接失败";
}
coutl("Link Error!" <<strError);
}
else
{
string strSrcPath = "\\\\127.0.0.1\\dcmtk-3.6.0\\CMakeLists.txt";
coutl("Link Ok!");
if(CopyFile(strSrcPath.c_str(), "D:\\tet.txt", FALSE))
{
coutl("拷贝成功!");
}
else
{
coutl("拷贝失败");
}
}
return 0;
}