使用c++将非文本文件从一台机器发送到另一台机器
Sending non-text files from machine to another using C++
我正在尝试构建一个应用程序,允许用户在LAN ~ TCP/IP中将文件/目录从其计算机传输到另一台计算机,而不需要接收计算机用户的任何干预。
要处理这个问题,我认为Sockets是最好的选择。因为如果我使用FTP并且让接收者的计算机的FTP端口持续打开,那将是一个漏洞。
使用Sockets是最好的选择吗?
如果是,如何发送目录和非文本文件抛出套接字?
说到安全,其实就是"无论你做什么,只有保存好登录所需的密码/凭据才能保证安全"。使用FTPS或SSH协议将加密机器之间的通信,确保外部没有人可以"看到"文件是什么(或密码等)。SSH还具有识别远程机器是否突然更改的功能,因此您可以识别是否有人引入了"中间人"攻击(即假装是您要发送的实际机器)
至于发送非文本文件,在我所知道的所有情况下,它应该和发送文本文件没有什么不同。当然,如果你使用FTP,你需要在发送二进制文件之前将协议设置为"二进制模式",因为有些系统会"修改"内容(例如翻译CR, LF和CRLF序列以匹配目标-当文件中所有值为0x0A的字节都被0x0D 0x0A替换时,JPG图像肯定会看起来很奇怪…)。
当然,你也可以在接收机器上设置一个带有合适软件的web服务器,并使用HTTP/HTTPS协议上传文件-有或没有密码保护(在HTTPS中,只要没有"外部信任组"可以访问实际的发送/接收机器,密码是安全的,因为流量是加密的)。
实际上还有几百种其他的解决方案。如果对你要解决的问题没有更多的了解,就很难制定出非常具体的解决方案。
您将需要接收机器上的某种服务器,因为通常没有任何进程侦听并将它接收到的内容写入文件系统。在编写大量代码之前,先练习一下netcat(也称为nc)。看到这里。
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 我的 SDL2 程序需要哪些二进制文件,以便它在另一台未安装 SDL2 的计算机中工作
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 另一台电脑上的Visual Studio C++项目无法生成
- Homebrew OS X OpenCV - 在另一台Mac上运行时寻找dylib
- 如何使用Messenger示例连接两台机器
- 当我在支持 avx2 的机器上编译并在另一台仅支持 avx 的机器上运行二进制文件时会发生什么?
- 如何从另一台Ubuntu机器中运行Ubuntu中的C 程序
- BST搜索函数在一台机器上返回true,在另一台机器中返回false
- OpenCl代码在一台机器上工作,但我在另一台机器中得到了CL_INVALID_KERNEL_ARGS
- 程序在一台机器上编译,但不在另一台机器上编译
- 相同的android cmake git项目在一台Ubuntu机器上编译良好,但在另一台Ubuntu计算机上编译不好,即
- 为什么安装vcredist_x86.exe不能修复 SideBySide 错误,当我在一台机器上开发 EXE 并在另一台机器上运行它时?
- 在一台有n个内核的机器中,确定要启动的线程数的最佳方法是什么?(C++)
- Windows 8.1如何检测一台机器是台式机还是平板电脑?
- 写一个C/ c++程序来查找一台机器是32位还是64位
- 从同一网络中的另一台机器的哈希表中获取wordID
- 如何在另一台机器上运行Visual Studio 2015中构建的C++应用程序
- 使用c++将非文本文件从一台机器发送到另一台机器
- 用c++代码在一台Linux机器上出现分段错误,而在另一台机器上没有