设想情况:
我要告诉你一个非常糟糕的解决方案:
最有效的方法是什么?我们正在努力使上述比率最大化,同时保持合理的转移时间。
发布于 2014-07-18 10:21:07
客户端发送文件名,服务器发送文件内容的散列(md5)。客户端尝试所有可能的组合以获得完全相同的md5。然后发回猜测,服务器验证。
发布于 2014-07-18 10:35:53
最有效的方法是什么?
除非您可以将数据压缩为y字节,否则根本不可能是。
所有通过猜测解决问题的尝试都是徒劳的,因为ACK/NACK对猜测的回答也是通信的一部分。要区分x字节的两个数据,您需要x字节的答案。
从不同的角度看一看:在您的猜测游戏中,发送猜测的整个任务可以由一个自动机器代替,一个接一个地发送猜测。见鬼,服务器可以自己做枚举。然后它会简单地说:嘿,#1051351的尝试是正确的。但是要传输,再次,你需要x字节。正如你所看到的,在另一个方向上的交流是完全不相关的。
发布于 2014-07-18 09:55:21
好的,如果我正确地理解了您的意思,那么客户端接收的总字节是有限制的,他需要从服务器获得一个文件(或者至少计算出该文件的内容)。
选项:
因此,我认为最好/最快的方法就是正常下载文件(如果这是限制的话,可以分几部分下载)。否则,您希望为N找到一个值,其中文件大小/N< MAX_RECEIVE_BYTES。
编辑:我唯一能想到的另一件事是,客户机询问服务器文件中0和1的数量,这样他就可以做出更有根据的猜测,从而减少可能组合的空间=请求数=更快。
https://stackoverflow.com/questions/24821678
复制相似问题