【发布时间】:2021-08-12 03:41:20
【问题描述】:
我有一个简单的套接字客户端-服务器应用程序。如果客户端通过套接字连接向服务器发出请求,当确认丢失时,它如何知道服务器收到了消息?我在以下情况下苦苦挣扎:
服务器接收客户端请求并开始处理消息。服务器向客户端发送一个确认,该确认可能永远不会到达客户端。客户端认为服务器没有收到消息。在这种情况下,我想防止客户端再次将请求发送到服务器,因为后者可能已经触发了每个请求只允许触发一次的进程。【问题讨论】:
-
为什么客户端因为没有收到服务器的响应就放弃了第一个请求?它仍然需要知道请求是否被处理,对吗?服务器知道,对吧?
-
@DavidSchwartz 因为它可能会阻塞等待可能永远不会到来的响应的线程(例如,服务器没有收到请求)
-
无限期阻塞只是糟糕的设计。如果客户端做了一些愚蠢的事情,客户端应该被固定为不要仅仅因为服务器没有回复而放弃第一个请求,而是采取更适当的行动。