我正在尝试在Windows中用C编写客户端 - 服务器程序。目标是从服务器接收目录列表。现在我试图以这种方式开发客户端服务器以利用大多数资源。
实现的一种方法是服务器进行单个send()调用以发送单个文件的信息。因此,如果有100个文件,则会进行100次调用。但我觉得这是网络资源的浪费。据我所知,windows中send()或recv()的缓冲区大小为8kb。但单个文件的信息将难以达到1kb。那么有没有办法让send()调用发送多个文件信息(文件信息存储在结构中。所以它们基本上形成一个链表)?也许我可以在一个Send()调用中发送至少8个文件的信息。这应该将send()调用总数减少到最大值13。
所以基本上有办法通过send()发送链表吗?如果你能想到任何替代方法,请告诉我。
答案 0 :(得分:1)
好问题!为此+1。
但是你真的想要或者需要编写你的代码才能使用Winsock吗?有充分的理由这样做 - 包括它的乐趣和挑战。但是如果您不需要,您可能需要考虑使用libcurl ftp library,它是免费的,多平台的(当然包括win32),只是起作用,可能会让您的工作变得更轻松。
答案 1 :(得分:0)
我知道使用FTP执行此操作的唯一方法是使用多个连接到FTP服务器。如果服务器允许这样做,则可以提高列表性能,因为列出完整文件夹树所需的许多协议交换可以并行运行。
RGDS, 马丁
答案 2 :(得分:0)