使用VC建立网络连接并访问网络资源

本文介绍了一种在Windows系统中通过编程方式实现网络资源映射的方法。利用VC++调用Win32 API函数WNetAddConnection2()和WNetCancelConnection(),可以实现在本地系统与远程网络资源之间的连接与断开,使用户能够像访问本地文件一样访问网络上的资源。文章提供了详细的代码示例,展示了如何使用这些函数,并解释了如何通过GetLastError()检查错误代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 提出问题

在windows下可以通过系统操作,将局域网的资源映射到本地,从而实现像本地数据一样访问网络资源。实际上这些步骤也可通过代码调用win32函数实现,前提是你得知道目标机器的地址以及密钥。

2. 解决方案

直接上VC的实例代码:

#include <Windows.h>
#include <iostream>
#include <fstream>

#pragma comment(lib, "mpr.lib")
#pragma comment(lib, "Netapi32.lib")

using namespace std;

int main()
{
	//在目标机器磁盘建立一个1.txt,无法直接读取
	ifstream infile("\\\\Jishi\\D\\1.txt");
	if (infile)
	{
		cout << "read txt!" << endl;
	}
	else
	{
		cout << "can't read txt!" << endl;
	}
	infile.close();

	//建立网络磁盘映射的连接
	string localName = "Y:";
	string remoteName = "\\\\Jishi\\D";
	string password = "123456";
	string user = "administrator";

	NETRESOURCE nr = { 0 };
	nr.dwType = RESOURCETYPE_ANY;
	nr.lpLocalName = const_cast<char *>(localName.c_str());
	nr.lpRemoteName = const_cast<char *>(remoteName.c_str());
	nr.lpProvider = NULL;

	DWORD dRes = WNetAddConnection2(&nr, password.c_str(), user.c_str(), CONNECT_UPDATE_PROFILE);

	//通过GetLastError()检查错误代码
	cout <<"连接结果:"<< dRes << endl;

	//读取映射盘符的连接
	ifstream infile1("Y:\\1.txt");
	if (infile1)
	{
		cout << "read txt!" << endl;
	}
	else
	{
		cout << "can't read txt!" << endl;
	}
	infile1.close();

	//读取网络地址的连接
	ifstream infile2("\\\\Jishi\\D\\1.txt");
	if (infile2)
	{
		cout << "read txt!" << endl;
	}
	else
	{
		cout << "can't read txt!" << endl;
	}
	infile2.close();

	//最后断开Y盘的连接
	WNetCancelConnection("Y:", TRUE);

    return 0;
}

该功能主要是通过调用WNetAddConnection2()函数来实现连接,通过WNetCancelConnection()函数断开的。其实连接后可以保证一定运行周期都是有效的,不用每次都断开重新再连。实际运用过程中两个函数的返回值会提供错误信息,可以通过GetLastError()获取并检查。
这里访问了三次网络资源,连接前访问,连接后映射地址访问,网络地址访问。这里的网络地址改成IP地址也是可以的。运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

charlee44

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值