文件服务器及其关联的客户端

时间:2011-06-05 05:58:02

标签: c linux sockets fileserver

我对套接字编程非常陌生,我正在实现一个文件服务器,它接收来自客户端的open(),read(),write(),close()等请求。文件服务器将处理请求并向客户端发送每个系统调用的返回值。

我不知道我需要定义什么类型的套接字(即流套接字,数据报套接字等)。什么命令将从客户端发送请求,我将如何从服务器接收返回值,如何在服务器端接收它并将返回值发送给我的客户端。

非常感谢能得到一些指示。

由于

编辑:像启动Server not able to properly read/open a filename sent by client in C

这项工作一样简单

2 个答案:

答案 0 :(得分:1)

部分取决于您的文件服务器设计。

如果您要使用stateless服务器,那么数据报或流就可以了。数据报相对比较好,因为您的服务器和客户端不需要处理部分请求 - 请求的全部内容都包含在数据报中。

如果您要使用stateful服务器,那么流可能更好 - 当您收到TCP RST时,您可以自动释放锁并取消分配客户端拥有的资源包。 (客户走了,扔掉他们的状态。)你当然可以用数据报服务构建一个有状态的服务器,但它看起来不太合适。

但是在开放的互联网上,通常只有UDPTCP - 我不知道RDP,一个可靠的数据报传输,是否在给定的ISP上路由。并且在不可靠的数据报和可靠的流之间被强制使用,我几乎每次都会推荐可靠的流。您是否只在可靠的LAN上使用协议?或者在有损无线或公共互联网链接上?

答案 1 :(得分:0)

我会使用流式套接字,但其他人则采用不同的方式,例如网络文件系统(NFS)。

要在客户端和服务器之间进行通信,您需要协议。 OpenSSH用于scpsftp程序的程序很难实现。看看它。 http://openssh.org/txt/draft-ietf-secsh-filexfer-02.txt