我正在实现一个基于 UDP 的 Stop-and-Wait ARQ。我正在尝试模拟错误概率。
在发送者和接收者中,我都有一个while()循环来继续发送和接收。一切正常,直到我在接收端引入错误概率。
我故意让接收方ACK即使收到数据包也不发送(以模拟ACK丢失的情况)。
令我惊讶的是,发送者和接收者都挂了!我知道这一点,因为为了调试,我printf()在发送者和接收者的while循环中都放了一个,并且没有打印任何内容。
为什么会发生这种情况?即使没有传输任何内容,while循环(独立于sendto()and recvfrom())也不应该停止。