我将数据从我的服务器应用程序转储到我的客户端应用程序(TCP / IP)。在某些时候,客户端可能希望中止传输并向服务器发出新请求。完成此任务的快速方法是终止TCP连接,以便丢弃服务器已发送并在网络上运行的任何数据。新连接将处理新的请求/传输,因此接收旧的冗余数据没有延迟。
这是一个可以接受的解决方案吗?
注意:我确实考虑过将这些块分成较小的大小,用客户端的ack消息分隔,但是你会遇到修复块大小的问题....太小而且太多的acks(传输速度慢)....太大了转储冗余数据仍有延迟。
我应该注意哪些想法或标准设计方法? TIA
答案 0 :(得分:0)
您可以使用两个类似于FTP的TCP连接 - 一个用于向服务器发送控制请求&其他传输实际数据。如果您希望中止转移,则只需要通过控制通道中止它。
答案 1 :(得分:0)
以块的形式发送数据但不承认。当客户端想要中止传输时,它会向服务器发送取消请求。客户现在只是抛弃了大块(仍然到达)。最终,服务器获取取消请求并停止发送数据。如果您愿意,可以让服务器发送取消确认。
通过这种方式,您可以获得具有最小开销的小块。您可以拥有1KB块,其中包含4或8字节的块头,其中包含块的大小。这是一个非常小的带宽和延迟开销。
请注意,小块通常不会导致较小的IP数据包。 TCP流数据。它不关心你的块大小。