【发布时间】:2010-12-21 13:37:41
【问题描述】:
我正在构建一个 Web 服务,它需要查询 1 到 n 个文件服务器,并因此接收多个文件。有没有人有这样做的好主意? Threads 会做得很好吗? 如果与某些服务器的连接时间比其他服务器长怎么办?我如何知道我是否真的拥有所有查询的文件?
谢谢
【问题讨论】:
标签: file
我正在构建一个 Web 服务,它需要查询 1 到 n 个文件服务器,并因此接收多个文件。有没有人有这样做的好主意? Threads 会做得很好吗? 如果与某些服务器的连接时间比其他服务器长怎么办?我如何知道我是否真的拥有所有查询的文件?
谢谢
【问题讨论】:
标签: file
你的问题很笼统,我的回答也是如此,无论如何我希望它会有用。
我会说你有两个选择:
使用异步模型。您打开到 N 个文件服务器的连接,并设置一个回调(或一个事件),只要收到来自一个服务器的数据就会触发(通常这些回调将在新线程中调用,但请查看您的工作框架的文档)。您从传递给回调/事件的数据中获取连接标识符,并更新相应的文件。
使用同步轮询模型。打开到 N 个文件服务器的连接,然后进入一个循环,在其中轮询每个连接以获取新数据;当新数据可用时,您更新相应的文件。当所有文件下载完成后退出循环。
根据您如何知道所有文件何时完成,没有自动的方法。您需要建立一个您和服务器都知道的约定,以了解如何知道文件已完全发送。选项包括:服务器在文件完成时关闭连接(不是很安全,因为连接可能会意外关闭),服务器在文件内容之前发送文件大小,文件结束由特殊字符序列表示(这在文件序列结尾的字节通常不会出现的文本文件上效果更好)。
【讨论】: