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