【问题标题】:Copying directories between two computers using sockets使用套接字在两台计算机之间复制目录
【发布时间】:2013-09-03 18:13:45
【问题描述】:

我必须使用 ANSI C 编写程序,该程序允许使用套接字在网络 [客户端 - 服务器程序] 中的两台计算机之间复制目录 [文件和/或目录]。两台电脑都安装了linux。我不能为此使用系统命令。

解释它应该如何工作: 在终端输入:

name_of_my_program /path_of_file_or_catalog computer_ip/path_where_to_copy

它应该将文件或整个目录复制到这个地方。

我不知道如何在没有系统命令的情况下移动目录。我不要求你提供代码。只是想法或代码的小样本 - 你知道,只是“框架”。 这个怎么做?我对使用套接字编写程序没有任何问题。我已经有了。

我将不胜感激您的想法和提示。 提前致谢!

【问题讨论】:

  • 我多么难以抗拒告诉老师三个无辜的小字母的冲动:FTP。
  • 查看以下链接(您可以在 SO 中找到其他链接):+ How to read a Linux dir in C

标签: c sockets copy client-server directory


【解决方案1】:

编写一个函数,该函数使用open()read()close()socket()connect()send() 发送包含其路径和名称的文件。

编写一个函数,该函数使用socket()bind()listen()accept()recv()open()write()close() 接收包含其路径和名称的文件。

编写一个使用opendir()readdir()closedir() 扫描目录树的函数。

将所有内容与您的完成结合起来。

【讨论】:

  • 好的,我还有一个问题。我正在通过套接字发送 [char *c]。例如:“嗨!”,在服务器上我收到“Hi7”。如何避免这种情况?我这样做是正确的:send(sockFD, exPath, strlen(exPath), 0) recv(connFD, destPath, MAXLINE, 0) 最后一个符号可能是空终止符号。但是怎么不理他呢?
  • @raziel:您可能想了解 C 如何使用字符数组来表示“字符串”。
  • @raziel:你不能指望send 的调用次数与recv 的调用次数相匹配。 TCP 是一种流协议。确保匹配的是 一个 连接期间传输的 total 字节数。因此,请确保在发送方和接收方始终跟踪实际发送和接收的字符数量。这是通过检查sendrecv 返回的值来完成的。
  • 我已经检查过了。我正在发送 12 字节,并接收 12 字节......我发誓我会阅读有关 C 和“字符串”表示的内容,但此时我没有足够的时间来做这件事。你能提出一些解决方案吗?在此先感谢...[不,这不是任何作业]
  • @raziel:因为不使用未初始化的变量总是一个好主意:使用所有0 初始化接收器缓冲区,然后让recv() 写入它。
猜你喜欢
  • 2012-07-06
  • 2012-02-17
  • 2023-03-07
  • 2021-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
相关资源
最近更新 更多