繁体   English   中英

TCP客户端数据请求

[英]TCP client data requesting

我试图找到一种有效的方法在服务器和客户端之间传输数据,没有一致性错误,同时保持较低的网络利用率。 我以前曾多次反对这种情况,并且总是最终使用以下两种计划之一:

计划#1:客户端请求所有可用数据(在连接时或首次请求时)。 客户端缓存数据并将其用作自己的本地数据库(存储在RAM中)。 在对数据进行任何更改(添加,删除,更新)时,服务器会通知客户端,然后客户端更新其缓存

优点:初始传输后网络利用率低(所有数据都被缓存)。 动态更新数据

缺点:服务器可能需要发送大量数据。 这可能会导致网络拥塞甚至导致客户端崩溃

计划#2:客户端按需请求一些数据(例如,检索列表的前25项)。 如果需要更多数据,客户端会请求接下来的25个项目,依此类推。

优点:简单。 无需一次传输所有数据

缺点:服务器无法动态更新客户端的数据,因为它不知道每个客户端具有哪些数据。 出于同样的原因,客户端无法缓存任何数据,因为它们可能会缓存过期的项目。 整个系统使用期间的高网络利用率。

处理这个问题的最佳方法是什么?

如果我理解正确,你有一些顺序的数据列表,“ (例如,检索列表的前25项) ”。

如果是这种情况,您可以让服务器在每个连接的基础上保持“直到记录x”指示符。 例如,假设您最初发送前25个项目。 服务器保留一条记录,客户端x已经达到记录25.然后客户端需要记录57,所以服务器发送所有内容直到包括记录57.假设记录36得到更新。 服务器只能将该更新发送给已经达到至少记录36的客户端。

如果实际上您的数据是一组连续记录,则允许缓存和更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM