Windows 处理网络驱动器文件I/O可能出现的错误 我试图通过一个网络驱动器(可能在广域网或VPN上)尽可能可靠地为本地C++应用程序……< /P>制作文件I/O。

Windows 处理网络驱动器文件I/O可能出现的错误 我试图通过一个网络驱动器(可能在广域网或VPN上)尽可能可靠地为本地C++应用程序……< /P>制作文件I/O。,windows,networking,file,error-handling,Windows,Networking,File,Error Handling,我需要能够处理哪些可能的错误情况 如何在测试中模拟这些错误条件 如何获取特定错误的详细信息?例如,如果fopen() 如何可靠地区分“网络驱动器访问功能完全正常,但文件不存在”和网络或服务器的各种问题 我在桌面上注意到的一个特殊错误情况(并非特定于我们正在开发的应用程序)是,有时第一次尝试访问网络驱动器上的文件会失败,但它可能会导致驱动器在后台重新连接,因为后续的连接会起作用。我不知道这是什么原因。这是我想要正确处理的错误条件的一个例子 编辑:这适用于使用网络共享上的文件进行节点间通信的传统分布

我需要能够处理哪些可能的错误情况

如何在测试中模拟这些错误条件

如何获取特定错误的详细信息?例如,如果
fopen()

如何可靠地区分“网络驱动器访问功能完全正常,但文件不存在”和网络或服务器的各种问题

我在桌面上注意到的一个特殊错误情况(并非特定于我们正在开发的应用程序)是,有时第一次尝试访问网络驱动器上的文件会失败,但它可能会导致驱动器在后台重新连接,因为后续的连接会起作用。我不知道这是什么原因。这是我想要正确处理的错误条件的一个例子


编辑:这适用于使用网络共享上的文件进行节点间通信的传统分布式应用程序。某些节点可能无人值守,因此将错误传递给最终用户可能不是一个选项。长期目标是切换到更好的协议,但在短期内,我希望使文件I/O尽可能可靠。

我认为您从错误的角度看待这一点。在应用程序本身中,除了实现网络化I/O本身之外,几乎没有人能够改进本质上是网络文件系统驱动程序的问题。也就是说,您最好根据自己的需要选择一个合适的网络文件系统。看看维基百科

通常,您的应用程序的行为应该类似于本地存储文件。不要太努力地处理网络问题。但是,如果您对网络文件系统的选择是好的,那么这些问题可以自动得到缓解


所以我想说,如果出现错误,你应该检查errno。如果远程文件写入失败(如果网络文件系统本身无法处理),可能需要使用本地存储。

将客户切换到新的网络文件系统将非常困难,但您帮助我重新思考了我们使用网络文件的方式和原因,以及我们应该如何处理错误。谢谢