1

我必须创建一个将在 Linux 服务器上运行的 C 程序。它将从 Oracle 数据库中获取信息,创建一个本地文件,然后将该文件复制到 Windows 服务器。我知道如何在 Linux 服务器上创建本地文件。但是将它从C复制到Windows服务器的方法是什么?

4

7 回答 7

8

先挂载 Windows 共享,然后在挂载的目录中创建文件。

于 2008-10-09T12:03:35.417 回答
8

这取决于两台机器之间的连接类型以及您必须达到的安全级别。

最简单的情况是两台机器在同一个局域网上,没有特别的安全性。在这种情况下,可能的解决方案是:

  • Samba : 在 Win 机器上共享一个目录,在 Linux 机器上安装/配置 Samba。C 程序会将共享磁盘视为特定路径下的本地磁盘(例如 /win/share)。

  • NFS:或者,您可以使用 NFS 在 Linux 上导出目录并在 Win 机器上安装/配置 NFS 产品。如果出于任何原因(例如安全/身份验证)无法使用 Samba,我认为这是第二个选项。

  • ftp:您需要在 Windows 机器上安装一个 ftp 服务器。通过 C 程序复制文件也会比较棘手。如果我没记错的话,Linux 上的 ftp 客户端是交互式的,它不应该在脚本中(或通过其他程序)使用,但你应该检查一下。

  • http:您需要在 Windows 机器上安装一个 http 服务器和一个允许上传的页面(IIS 加上一些 asp 页面就足够了)并使用libcurl与之对话。

当安全性受到关注时,更复杂的场景将需要使用 scp 或 sftp over 和 SSL 连接。带有 https 的 libcurl 也可以提供足够好的解决方案。

我的建议是:首先尝试 Samba,看看是否满足您的需求,作为程序员,所有其他选项都需要您做更多的工作。

于 2008-10-09T12:32:14.080 回答
3

也许您可以简单地使用 smbclient?无需设置任何服务器或任何东西,只需在服务器上拥有某种共享驱动器即可。

smbclient //myserver/my_directory <password> -U [domain/]<my_user>

然后,您可以在 linux 机器上的当前目录和 Windows 服务器之间“放置”和“获取”您喜欢的任何文件。

put my_file_to_copy.dat

就是这样。

于 2008-10-09T13:11:19.617 回答
1

是的 - 只需使用您想要的任何网络文件系统(例如 Samba)安装 windows 框,然后使用普通 IO 原语将文件复制到该目录中。

标记

于 2008-10-10T20:43:04.573 回答
0

或者使用 FTP。有很多 FTP 库可以链接到你的 Linux C 代码。

于 2008-10-09T12:10:44.043 回答
0

windows机器应该首先提供一种接受这种行为的方法(想到FTP)。您可以开发一个在 windows 机器上运行的应用程序来接受文件,但更容易使用已经开发的应用程序之一。

filezilla就是一个例子。

对于实际问题,如何上传文件,任何 ftp 客户端都可以解决问题。

于 2008-10-09T12:10:49.707 回答
0

使用 SMTP 并邮寄怎么样?

于 2008-10-09T13:38:12.620 回答