通过套接字传输压缩文件?

时间:2018-02-05 20:58:15

标签: c linux sockets tar

我有2台电脑。一个(计算机2)从两个不同的进程获取文件(.json),然后它将这些文件(通过以太网电缆)传递给另一台计算机(计算机1)(如附图中所示)。这种情况不仅仅发生在一起。

要执行此文件传输,我的想法如下:

  • 在c中创建服务器/客户端套接字以通信两台计算机。
  • 在计算机2中记录文件(数量为4个文件)。
  • 收听计算机1中的文件。

一开始我想做的一件事就是使用Netcat和tar,在bash中。但是我读到这不是一个好主意,因为bash在文件传输方面不能很好地工作。所以我决定用C语言(它必须是C或C ++,而不是python,但我更擅长C,所以C是可选的)。 所以现在我正在使用这个示例代码:

Send and Receive a file in socket programming in Linux with C/C++ (GCC/G++)

但我无法弄清楚tar的部分并发送Tar,如果这段代码对此有帮助。

其他方式我想用zeromq做这件事,但我之前没有用过,所以我不知道是否值得额外的铆钉。

提前感谢您的回答。

image

1 个答案:

答案 0 :(得分:1)

.tar文件格式非常简单(关于如何自行读取/写入.tar文件的documentation可以通过Google搜索" .tar文件格式"或类似文件找到),或者你可以只使用现有的libtar读写器库,如果你不想重新发明轮子。

另一种选择(假设您只需要一个快速程序来处理个人用例而不需要生产级别的解决方案)只需要调用system()(或类似)让它代表你的C程序执行适当的shell命令 - 但如果它足够好,就不得不想知道为什么一个简单的bash脚本也是不可接受的。 Bash本身可能不擅长文件传输,但是你可以从bash(scp,rsync,tar,untar等)调用的各种命令行实用程序当然可以正常工作。