2012-06-28 244 views
1

我要开发1个FTP(简单)服务器C。
我的意思是什么简单 ?? 我的意思是FTP服务器必须支持:
ftp ftp服务器C

  1. 认证(user和pass,PORT)
  2. 更改目录(CD)
  3. 文件列表(LIST)
  4. 文件retrive(RETR)

我刚刚发展为“拆分部分”的数字1-2-3-4,我必须合并成main.c。所以他们没有问题。
我不明白的是如何“接收”来自客户端的通信。
我的意思是如何实现客户想要的(USER,PASS,CD,LIST,RETR)?
我读过rfc959,但我还没有完全理解客户端和服务器之间的通信。
摘要:

  1. 客户端连接到服务器(所以这个部分是插座“接受(..)”的服务器),分辩? 1a服务器发送给客户端“你连接”了吗?
  2. 客户端发送给服务器用户,密码(文件1,auth.c但我不知道客户端如何向服务器发送用户和密码请求时如何读取)
  3. 成功登录后服务器发送文件列表第3部分,list.c,没问题)
  4. 客户端向服务器发送它要下载的文件或changedir命令(再次,如何读取从客户端的请求这些信息?)

我希望你明白:)

编辑:我在GNU/Linux

+1

我建议你开始就更简单了,通过阅读网络教程,直到你知道插座是什么以及它们如何工作,如何创建简单的客户端,简单的服务器,阻塞和非阻塞套接字之间的区别,服务器的可以处理多个连接(基本上按该顺序)。然后你可以开始研究制作一个FTP服务器。 –

+0

当然,除了上面的网络相关的东西,你还需要一些基本的理解,如字符串和字符串解析,文件处理和列表。 –

+0

我已经开发了一个小型客户端和服务器(也有叉),但他们的工作不像和FTP客户端和服务器。事实上,我的程序使用是:1)客户端连接到服务器2)客户端发送“文件列表”3)服务器发送结果4)客户端发送文件名5)服务器发送文件...所以不正确的像一个FTP xD – polslinux

回答

2

虽然你的问题有点混乱,但我试图回答它。使用“用户名密码”等命令行参数并将这些argv[]send传递给服务器,并在服务器端使用recv接收。为了更好地理解,请参阅链接Client.cpp

希望这可以解决您的困惑。

+2

请记住upvote并接受解决方案,如果它可以帮助你:-) – Abhineet

+0

非常感谢:)它可以帮助我一点! – polslinux

0

是如果你使用Berkeley套接字API(你提accept()意味着你),你通常使用recv()从套接字读取数据。您需要从客户端正在连接的套接字读取数据,然后检查您所得到的信息,以确定它是否是您可以处理的有效命令。

+0

哦对不起:)是的,我在GNU/Linux上开发:) – polslinux

+0

但我不明白的是“客户端发送什么”?它发送“USER用户名PASS pasw”或“你好USER选择用户名”或其他? – polslinux