gpt4 book ai didi

c - 实现确认包

转载 作者:行者123 更新时间:2023-11-30 15:28:31 24 4
gpt4 key购买 nike

我正在尝试实现一个简单的即时通讯服务器,但遇到了以下问题:

如何实现带有确认数据包的协议(protocol)?

我认为可以这样实现:

>> client sends packet with ACKID and waits for ACKID to arrive
<< server receives packet and sends the same ACKID back
now the client knows the packet was fully delivered.

但在这个概念中,客户端将阻塞,直到 ACKID 被发回,如果另一个数据包中断此过程,则客户端将永远阻塞(或直到发生超时)。

最佳答案

我假设您现在正在发送这样的数据:

Send("mydata");

现在,执行以下操作:

Send("mydata");
auto ack = Receive();
assert(ack == "data acknowledged");

(伪代码)。

对这两个操作都使用超时。只有当接收完成且没有错误时,您才知道数据已收到。

同样的原理可以转化为异步 IO API。这对问题来说并不重要。

(停止在 TCP 上下文中谈论“数据包”。TCP 不知道那是什么。)

关于c - 实现确认包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26555599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com