0

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

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

将不胜感激得到一些指示。

谢谢

编辑:像这样的简单工作启动服务器无法正确读取/打开客户端在 C 中发送的文件名

4

2 回答 2

1

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

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

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

但是在开放的 Internet 上,通常只有UDPTCP——我不知道RDP(一种可靠的数据报传输)是否在给定的 ISP 上路由。并且被迫在不可靠的数据报和可靠的流之间,我几乎每次都推荐可靠的流。你会只在可靠的局域网上使用你的协议吗?还是在有损无线或公共 Internet 链路上?

于 2011-06-05T06:29:43.533 回答
0

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

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

于 2011-06-05T06:06:20.970 回答